Double.valueOf的结果说明

时间:2015-01-15 10:10:22

标签: java floating-point

我想知道为什么我在做这个双数的总和时得到这么多的小数点

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

输出如下 0.56和 1.6800000000000002 为什么第二次求和是加上那些小数,它应该只是1.68

1 个答案:

答案 0 :(得分:4)

这是因为双打1.12和0.56的加法不会产生1.68的精确表示(它不会精确地导致1.68)。您可以看到与此代码的区别:

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