为什么这段代码会产生不准确的结果?
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
答案 0 :(得分:2)
在Java中,double值为IEEE floating point numbers。除非它们是2的幂(或2的幂的总和,例如1/8 + 1/4 = 3/8),否则即使它们具有高精度,也不能精确地表示它们。某些浮点运算会使这些浮点数中出现的舍入误差复杂化。在您上面描述的情况下,浮点错误已经变得非常重要,可以显示在输出中。