Java开发中浮点数使用的常见的错误

浮点数使用常见陷阱:
eg:用2.7与8.1/3进行大小比较
由于计算机的机械特性8.1/3计算出来将是一个近似于2.7的小数直接比大小是不行的;而是要采取做差的方法,小于某一个精度,而这个精度则取为对应的PAI
  如:double num11 = 2.7;
         double num12=8.1 / 3; 
            System.out.println(num11);//输出的为2.7
            System.out.println(num12);//接近 2.7 的一个小数,而不是 2.7
     //得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断是,要小心
    //应该是以两个数的差值的绝对值,在某个精度范围类判断
    if( num11 == num12) {
    System.out.println("num11 == num12 相等");
    }//这种写法是错的
//正确的写法 应为如下
if(Math.abs(num11 - num12) < 0.000001 ) {
System.out.println("差值非常小,到我的规定精度,认为相等...");
// 可以通过 java的API                         
System.out.println(Math.abs(num11 - num12));
//细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等
    }
}
posted @ 2021-11-05 21:04  言葉。  阅读(166)  评论(0)    收藏  举报