两个相同值的差不为零

时间:2018-12-20 11:51:47

标签: python precision floating-accuracy

当我在python上比较两个数字时,即使它们完全相同,这两个数字之间的差也不是零,而是很小的值(<10 ^(-16))。

例如

if A == B:
    print('We are the same')

什么都没发生。 但是:

if A - B < 10^(-16):
    print(A-B)

它会打印出差异。

问题出在哪里?

1 个答案:

答案 0 :(得分:2)

在Python中,^运算符执行异或,因此10^(-16)的意思是10 XOR (-16),它正确返回了-6(比A-B)。
如果要执行幂运算,则必须写10**(-16),现在支票可以按预期运行。

这意味着您的代码应为:

if A - B < 10**(-16):
    print(A-B)

# OUTPUT: 0