我有一小段这样的代码:
double number1 = 6;
double number2 = 5.99;
double result = number1 - number2;
然而,result == 0.009999999999999787
代替0.01
我知道这是IEEE 754标准的问题,但我不明白为什么。你能帮我解释一下吗?
答案 0 :(得分:4)
这是因为浮点数不能用有限位的二进制系统精确表示(不是没有精度损失)
答案 1 :(得分:1)
因为浮点数没有.01。小数位表示为1/root 2
,因此您可以获得类似.0125或者您拥有的内容,但浮点数中没有.01。如果你需要精确的精度,请使用整数。