我的代码得到的答案是False,但为什么?
from math import pow
c=2-4*pow(10,-6)
c+=1.0
d=2.999996
print(c==d)
表达式后面的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))