学习Python,为什么这不起作用?

时间:2014-01-07 20:11:08

标签: python math if-statement

我正在学习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”语句不起作用?谢谢!enter image description here

2 个答案:

答案 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}}