繁体   English   中英

如何通过在Python中将无理数除以另一个数来获得非常长的十进制数字?

[英]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被用来代替小数对象方法,这将尊重小数精度设置。 您也可以将12强制设置为Decimal但实际上并不需要-它们会自动转换为Decimal因为它们的另一个操作数是Decimal 以上输出:

1.6180339887498948482045868343656381177203091798057628621354486227052604628189024
81

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM