你可以通过验证一下两个结果
System.out.println(10-0.4);
System.out.println(10-9.4);
就会发现问题:
我这里测试的结果是:
9.6
0.5999999999999996
有一些浮点数的运算结果会失去精确度。浮点数值没办法用十进制来精确表示的原因要归咎于CPU表示浮点数的方法。
浮点数由两部分组成:指数和尾数。浮点数的值实际上是由一个特定的数学公式计算得到的。您所遇到的精度损失会在任何操作系统和编程环境中遇到。
所以,尽量避免使用不同类型的常量之间的运算。 |