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

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)

use*_*ica 5

浮点数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 的倍数

  • Python * ints *没有C整数类型的限制。 (3认同)