Java - 双精度浮点

时间:2012-12-10 22:06:20

标签: java

  

可能重复:
  how to fix double precision issue in java

我有一小段这样的代码:

double number1 = 6;
double number2 = 5.99;
double result = number1 - number2;

然而,result == 0.009999999999999787代替0.01

我知道这是IEEE 754标准的问题,但我不明白为什么。你能帮我解释一下吗?

2 个答案:

答案 0 :(得分:4)

这是因为浮点数不能用有限位的二进制系统精确表示(不是没有精度损失)

请参阅:http://en.wikipedia.org/wiki/Loss_of_significance

答案 1 :(得分:1)

因为浮点数没有.01。小数位表示为1/root 2,因此您可以获得类似.0125或者您拥有的内容,但浮点数中没有.01。如果你需要精确的精度,请使用整数。