Python 3 处理大整数

1 投票
2 回答
9215 浏览
提问于 2025-04-17 22:44

我在用Python处理一些大整数(64位,无符号)。我想把一串字符串转换成整数。但是我的Python3给出的结果不对。

举个例子,如果我把输入字符串“12736193479609682490”转换成整数,结果并不是我预期的那样:

a = '12736193479609682490'
b = int(float(a))

>>>b
12736193479609681920

我在ubuntu 12.04-64位上使用的是Python 3.4.0。我该怎么做才能正确转换呢?谢谢。

2 个回答

3

不要先转换成 float,因为这样会导致精度丢失。

b = int(a)

当数值超过 9007199254740992 时,float 就开始出现问题了。最开始是一些奇怪的值,随着数值变大,问题会越来越多。

6

不要先把它转换成浮点数。

>>> int("12736193479609682490")
12736193479609682490

这个数字太大了,无法准确地用浮点数存储!

撰写回答