关于java:Double.valueOf的结果说明

Explanation of result for Double.valueOf

本问题已经有最佳答案,请猛点这里访问。

我想知道为什么我在做这个两位数之和时得到这么多小数点的原因。

1
2
3
System.out.println(Double.parseDouble(".56"));
double dvalue=1.12+Double.parseDouble(".56");
System.out.println(dvalue);

输出如下0.56和16.8亿为什么二次求和加上这些小数,应该是1.68。


这是因为加上1.12和0.56的双精度数并不能得到1.68的精确表示(并不能精确地得到1.68)。您可以看到此代码的区别:

1
2
System.out.println(1.12+0.56);   // 1.6800000000000002
System.out.println(1.68);        // 1.68