在 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
假设我想删除数字的最后一位 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