这是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解决了问题,但为什么?
答案 0 :(得分:2)
计算机使用有限数量的位来表示数字,因此不可能完全表示它们。您所看到的是计算机实际可以代表的数字四舍五入的结果。
What Every Computer Scientist Should Know About Floating-Point Arithmetic是一个很好的阅读,因为这是你第一次看到这个。