在python中序列化长数字的最佳方法是什么?
我在想泡菜,但它还在回归“缩短版”。我显然要写所有数字..
longNum = math.pow(2,1000)
f = open("file", "w")
pickle.dump(str(longNum), f)
f.close()
f = open("file","r")
longNum = pickle.load(f)
f.close()
print longNum
1.07150860719e + 301
答案 0 :(得分:7)
如果启动解释器,您可以快速查看问题。
>>> math.pow(2,1000)
1.0715086071862673e+301
>>> 2**1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L
math.pow返回一个浮点数,根据定义,它不会保留“所有数字”。通过使用长整数运算符**
,您的结果很长,这正是您要寻找的。 p>
答案 1 :(得分:0)
我认为这实际上是打印格式化的问题,而不是序列化。阅读this页面,看看是否正在发生这种情况。
另外,请不要考虑gnibbler对此问题的评论。我认为这可以击中头部。