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));
//细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等
}
}
浙公网安备 33010602011771号