我正在学习python,并且一直在尝试各种各样的东西......由于某些原因,这不起作用!
x = (-2.1)
if ( (0.4*(x)) - (0.02*(x)) + (1.396) ) == 0.598:
print "TRUE!"
else:
print "FALSE!"
print ( (0.4*(x)) - (0.02*(x)) + (1.396) )
打印错误!其次是0.598,答案显然是0.598,为什么“if”语句不起作用?谢谢!
答案 0 :(得分:2)
如果您尝试print
(0.38 * x) + 1.396 # note simplified maths and syntax
你很快就会明白为什么:
0.5979999999999999
由于浮点数(float
)的工作方式,这并不完全等于0.598。您最好使用容差来测试这些:
a = (0.38 * x) + 1.396
if abs(a - 0.598) < 0.0001:
答案 1 :(得分:1)
你很困惑,因为python print
正在使用float.__str__
,而>>> ( (0.4*(x)) - (0.02*(x)) + (1.396) ).__str__()
'0.598'
>>> ( (0.4*(x)) - (0.02*(x)) + (1.396) ).__repr__()
'0.5979999999999999'
最多会修剪12位数,所以数字不是打印的数字:
{{1}}