在 python 中将大数除以 10 给出了错误的结果

Dividing large number by 10 in python gives the wrong result

假设我想删除数字的最后一位 n。 为此,我使用代码 int(n/10).

遗憾的是,对于大数,这给出了错误的结果。 例如 n = 4474630975855204960 除以 10 得出 447463097585520512.

这种行为的原因是什么?我该如何解决?

您可以从 int 转换为 str,删除最后一个字符,然后将其转换回 int:

n = 4474630975855204960

print(int(str(n)[:-1]))

输出:

447463097585520496

此语法因 python 版本而异,使用 // 进行整数除法

$ python2 -c 'print("%d" % (4474630975855204960/10))'  # Integer division
447463097585520496
$ python3 -c 'print("%d" % (4474630975855204960/10))'  # Float division
447463097585520512
$ python3 -c 'print("%d" % (4474630975855204960//10))'  # True division
447463097585520496

对于某些数学运算,Python 解释器会为您处理长整数,您无需考虑。

除法不同,它将整数转换为浮点数,这在 Python 中处理得不好。

您可以通过直接使用整数除法来解决这个问题 - 二 // 而不仅仅是一 /。

输入

4474630975855204960//10

输出

447463097585520496