Tor*_*lla 1 python floating-point modulo python-3.x
我想在Python中检查(大整数)值是否为10的幂。通常,我只会检查该值的模10。这对于不超过1.E + 22的值都可以正常工作,然后返回奇怪的值:
lowInteger = 1.E12
highInteger = 1.E23
print(lowInteger % 10) #as expected returns 0
>>> 0.0
print(highInteger % 10) #returns 2.0 instead of 0.0, 1.E23 returns 3.0, etc
>>> 2.0
Run Code Online (Sandbox Code Playgroud)
浮点数1.E23是不是 10的幂,是最接近的可表示数的10你想要的动力。其实际值为
>>> int(1e23)
99999999999999991611392
Run Code Online (Sandbox Code Playgroud)
如果需要精确的整数,请使用整数,而不要使用浮点数。你要10**23。
>>> 10**23
100000000000000000000000
Run Code Online (Sandbox Code Playgroud)
另外,如果要检查数字是否为10 的幂,x % 10 == 0无论如何都是错误的检查,因为这是在检查数字是否为10 的倍数。