Java - 双精度浮点数



可能的重复项:
如何修复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。如果需要精确的精度,请改用整数。

最新更新