Python 比较大数字时的非直观行为
刚发现一些在Google CodeJam中竞争时的非直觉行为Python 比较大数字时的非直观行为,python,boolean,floating-accuracy,largenumber,Python,Boolean,Floating Accuracy,Largenumber,刚发现一些在Google CodeJam中竞争时的非直觉行为 input: pow(10, 20) in [pow(10, 20) * 1.0] output: True 好的 什么 那么这个行为取决于数字的大小 这是因为大型Python整数在幕后的表示方式不同吗 input: True == True output: False 好的,一切正常 input: pow(10, 20) in [pow(10, 20) * 1.0] == pow(10, 20) in [pow(10, 20
input: pow(10, 20) in [pow(10, 20) * 1.0]
output: True
好的
什么
那么这个行为取决于数字的大小
这是因为大型Python整数在幕后的表示方式不同吗
input: True == True
output: False
好的,一切正常
input: pow(10, 20) in [pow(10, 20) * 1.0] == pow(10, 20) in [pow(10, 20) * 1.0]
输出:False
更多
input: pow(10, 20) in [pow(10, 20) * 1.0] and pow(10, 20) in [pow(10, 20) * 1.0]
输出:真
我完全迷失了这是因为浮点运算,也因为python在涉及整数时处理求幂结果的方式:
>>> type(pow(10,30))
<class 'int'>
这是因为浮点运算,也因为python在涉及整数时处理求幂结果的方式:
>>> type(pow(10,30))
<class 'int'>
试试int1e+30,你也会感到惊讶。试试int1e+30,你也会感到惊讶。
>>> pow(10, 20) in [pow(10, 20) * 1.0] == pow(10, 20) in [pow(10, 20) * 1.0]
False
>>> (pow(10, 20) in [pow(10, 20) * 1.0]) == (pow(10, 20) in [pow(10, 20) * 1.0])
True
>>>