我使用Python来处理一些大整数(64位,无符号)。我正在尝试将一串值转换为整数。但是我的Python3给了我不正确的结果。 例如,如果我将输入字符串“12736193479609682490”转换为整数,结果就不是我的预期:
a = '12736193479609682490'
b = int(float(a))
>>>b
12736193479609681920
我在ubuntu 12.04-64bit下使用Python 3.4.0。我该怎么做才能做出正确的转换?感谢。
答案 0 :(得分:4)
不要先转换为浮动。
>>> int("12736193479609682490")
12736193479609682490
这个数字太大了,无法准确存放在浮点数中!
答案 1 :(得分:2)
不要先转换为float
,否则就会失去准确性。
b = int(a)
浮点数在达到9007199254740992之后开始失败。首先是奇数值,然后越大越好。