我想在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
答案 0 :(得分:4)
浮点数1.E23
不是的10的幂。它是您想要的10的幂的最接近的可表示数字。实际值为
>>> int(1e23)
99999999999999991611392
如果需要精确的整数,请使用整数,而不要使用浮点数。您需要10**23
。
>>> 10**23
100000000000000000000000
此外,如果要检查数字是否是10的次幂,则x % 10 == 0
还是错误的检查,因为这是在检查数字是否为 multiple < / em>之10。