减去两个浮点值给我奇怪的输出python

时间:2015-11-25 17:25:33

标签: python python-2.7

这是相关代码的一部分:

if msgheader.startswith("Election"):
    electionMessage = msgheader.split()
    electionMessage = electionMessage[1]
    print "---My iD: %s Incoming Message: %s" %(iD, electionMessage)

    sleep(5)
    print "this is the result: " + str(float(iD) - float(electionMessage))
    if iD == electionMessage: #This is the actual code that i want to run but 
#never runs so i tried the test above to subtract the float values.

这是我从上面的代码得到的结果:

---My iD: 0.716176767833 Incoming Message: 0.716176767833
this is the result: 4.5263792714e-13

这怎么可能?如我想要比较的代码中所描述的,如果iD等于electMessage,但它从未输入if语句,所以我开始测试输出和减去现在我得到这个?谁知道为什么?

1 个答案:

答案 0 :(得分:1)

来自https://docs.python.org/2.7/tutorial/floatingpoint.html

“很容易忘记存储的值是原始小数的近似值,因为在解释器提示符处显示浮点数的方式.Python仅打印十进制近似值到存储的二进制近似值的真实十进制值通过机器“

所以我猜数字并不完全相同,它们似乎只是在提示

我建议来自numpy的np.isclose()