Python 3 处理大整数
我在用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
这个数字太大了,无法准确地用浮点数存储!