[英]How to get a very long decimal digit by dividing a irrational number with another number in Python?
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中获得一个非常长的数字?
math
模块与本机二进制浮点算术一起工作。 所以关键
1+math.sqrt(5)
该部分与您设置的小数精度无关。 该部分完全在本机二进制浮点中完成。
为了使输出保持合理的长度,让我们尝试使用80个有效的十进制数字代替。 所以
getcontext().prec = 80
接着
phi = str((1 + Decimal(5).sqrt()) / 2)
代替。 明确? 现在sqrt
被用来代替小数对象的方法,这将尊重小数精度设置。 您也可以将1
和2
强制设置为Decimal
但实际上并不需要-它们会自动转换为Decimal
因为它们的另一个操作数是Decimal
。 以上输出:
1.6180339887498948482045868343656381177203091798057628621354486227052604628189024
81
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.