大量的Modulo 10 |检查数字是否为10的幂

时间:2019-02-15 19:59:01

标签: python python-3.x floating-point modulo

我想在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

1 个答案:

答案 0 :(得分:4)

浮点数1.E23 不是的10的幂。它是您想要的10的幂的最接近的可表示数字。实际值为

>>> int(1e23)
99999999999999991611392

如果需要精确的整数,请使用整数,而不要使用浮点数。您需要10**23

>>> 10**23
100000000000000000000000

此外,如果要检查数字是否是10的次幂,则x % 10 == 0还是错误的检查,因为这是在检查数字是否为 multiple < / em>之10。