zoukankan      html  css  js  c++  java
  • [Java] 运算精度

    0x01

    Java的+、-、*、/的最低运算精度是int,所以以下代码会报错:

    short s1 = 3;
    short s2 = 5;
    s1 = s1 + s2;
    

    以上代码的错误原因是s1+s2的结果是int类型,不能存入short类型变量。

    但如果是+=、-=、*=、/=就不会有这个问题,以下这段代码不会报错:

    short s1 = 3;
    short s2 = 5;
    s1 += s2;
    

    0x02

    运算的最高精度跟算式中最高精度(最大存储范围)的那个量有关系:

    int a = 2147483647;
    System.out.print(a+2);
    // 此时会输出-2147483647
    

    因为a(int类型)和2(默认为最低精度:int类型)最高精度是int,但结果超过int(16位有符号整数)的存储范围。

    而改成long就能得到符合直观的结果:

    long a = 2147483647;
    System.out.print(a+2);
    // 此时会输出2147483649
    
    本文为博主原创,禁止转载或摘编。
  • 相关阅读:
    一个通用的事件监听函数全集
    单应性矩阵
    opencv姿态估计
    opencv相机标定
    Harris角点
    盒滤波Box Filter
    win10+vs2015+pcl1.8.1安装配置
    图像元素遍历
    阈值分割
    二叉树的层次遍历
  • 原文地址:https://www.cnblogs.com/aixcyi/p/11900998.html
Copyright © 2011-2022 走看看