Modulo 10 for large Numbers |检查一个数字的权力是否为10 [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我想检查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
python python-3.x floating-point modulo
1个回答
4
投票

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

>>> int(1e23)
99999999999999991611392

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

>>> 10**23
100000000000000000000000

此外,如果你想检查数字是否为10的幂,x % 10 == 0无论如何是错误的检查,因为那是检查数字是否是10的倍数。

© www.soinside.com 2019 - 2024. All rights reserved.