提问者:小点点

为什么我的代码返回false作为答案? [副本]


我的代码得到的答案是False,但为什么?

from math import pow
c=2-4*pow(10,-6)
c+=1.0
d=2.999996
print(c==d)

共2个答案

匿名用户

表达式后面的c值为2.9999960000000003,d为2.999996。 这是由于python(和计算机)一般都试图编写浮点数。

匿名用户

因为C不等于2.999996,所以它实际上等于2.9999960000000003。 这里有一篇文章解释了其中的原因:https://0.300000000000000004.com/。 相反,你可以做的是:

print(round(c, 6) == round(d, 6))  # this will return True:

作为更干净和更精确的方法的替代

from math import isclose
print(math.isclose(c, d, rel_tol=1e-5))