可能的重复项:
如何修复Java中的双精度问题
我有一小段这样的代码:
double number1 = 6;
double number2 = 5.99;
double result = number1 - number2;
但是,result == 0.009999999999999787
而不是 0.01
我知道这是IEEE 754标准的问题,但我不明白为什么。你能为我解释一下吗?
这是因为浮点数在位有限的二进制系统中无法精确表示(并非没有精度损失)
请参阅:http://en.wikipedia.org/wiki/Loss_of_significance
因为浮点数中没有 .01。小数位表示为 1/root 2
,因此您可以得到类似 .0125 或您那里的东西,但浮点数中没有 .01。如果需要精确的精度,请改用整数。