java中双精度的乘法给出了错误的结果

时间:2015-05-10 00:50:08

标签: java jvm double multiplication

这是jvm中的错误,下面的代码给出了结果:409.99999999999994!

public class HelloWorld{
     public static void main(String []args){
          double d = 4.10d;
          double d2 = d * 100d ;
          System.out.println(d2);
     }
 }

通过浮点更改double解决了问题,但为什么?

1 个答案:

答案 0 :(得分:2)

计算机使用有限数量的位来表示数字,因此不可能完全表示它们。您所看到的是计算机实际可以代表的数字四舍五入的结果。

What Every Computer Scientist Should Know About Floating-Point Arithmetic是一个很好的阅读,因为这是你第一次看到这个。