使用double和float计算不准确

时间:2014-11-09 18:23:53

标签: java double floating-point-precision

为什么这段代码会产生不准确的结果?

double a = 0.3 + 0.3 + 0.3;
System.out.println(a);
float b = 0.3f + 0.3f + 0.3f;
System.out.println(b);

结果

0.8999999999999999
0.90000004

1 个答案:

答案 0 :(得分:2)

在Java中,double值为IEEE floating point numbers。除非它们是2的幂(或2的幂的总和,例如1/8 + 1/4 = 3/8),否则即使它们具有高精度,也不能精确地表示它们。某些浮点运算会使这些浮点数中出现的舍入误差复杂化。在您上面描述的情况下,浮点错误已经变得非常重要,可以显示在输出中。

相关问题