import math
from decimal import *
getcontext().prec = 10000
phi = str(Decimal(1+math.sqrt(5))/Decimal (2) )
print(phi)
print(len(phi))
#output >> phi - 1.6180339887498949025257388711906969547271728515625
#output >> len(phi) - 51
我想得到一个1000位长的数字,但是在Python中,限制似乎是51。所以我该怎么做才能在Python中得到一个很长的数字?
答案 0 :(得分:2)
math
模块与本机二进制浮点算法一起使用。因此至关重要
1+math.sqrt(5)
part与您设置的小数精度无关。该部分完全在本机二进制浮点中完成。
为使输出保持合理的长度,请尝试使用80个有效的十进制数字代替。所以
getcontext().prec = 80
然后
phi = str((1 + Decimal(5).sqrt()) / 2)
相反。明确?现在,改用小数对象的sqrt
方法 ,这将尊重您设置的小数精度。您也可以将1
和2
强制设置为Decimal
,但实际上并不需要-它们会自动转换为Decimal
,因为它们的另一个操作数是Decimal
。以上输出:
1.6180339887498948482045868343656381177203091798057628621354486227052604628189024
81