对于浮点型运算,可能出现如下损失精度的问题:
public class Hello {
public static void main(String[] args) {
double d = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1;
System.out.println(d == 1.0);
System.out.println(d);
}
}
运行结果:
false
0.9999999999999999
这种情况,只能用两个数的距离在某个范围内判定它们相等来做。
如有a ,b 两个浮点数,则Math.abs(a - b ) > 0.00001(Math.abs用来求表达式的绝对值,返回值类型和表达式的数据类型一致),类似这种形式来判断。(不一定是0.00001,看具体对精度的要求)