如何摆脱 python 中的十进制溢出...我正在尝试计算魔方可以为学术项目提供的可能组合



嘿,我正试图计算2000x2000个红宝石立方体的可能组合数量,我用python编写了这段代码来计算它,因为我使用的在线计算器和物理计算器都没有结果。我需要一台更结实的电脑吗?还是这根本无法实现?

实际方程为10^(((3.26017(*((2.00214(^(2000((-6.51938(。如果你们中的任何人能为我计算它,如果可能的话,请像复制粘贴代码一样寄给我,谢谢。

import decimal
>>> decimal.getcontext().prec = 10000
>>> decimal.Decimal(10)**((decimal.Decimal(3.26017))*((decimal.Decimal(2.00214))**(decimal.Decimal(2000))))-(decimal.Decimal(6.51938))
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
decimal.Decimal(10)**((decimal.Decimal(3.26017))*((decimal.Decimal(2.00214))**(decimal.Decimal(2000))))-(decimal.Decimal(6.51938))
decimal.Overflow: [<class 'decimal.Overflow'>]

2.002142000是一个超过600位的数字。把它乘以3再减去6不会有太大的变化。

问题是,你想把10提高到这个幂。这个数字的10次方不是一个有600位数字的数字,它是一个数字有600位的数字。要将这个数字存储在内存中,您需要10600位的数量级。一个EB(假设你能得到一台有这么多内存的计算机(大约只有10个19个位。

简而言之,您的数字太大,无法计算。

相关内容

  • 没有找到相关文章

最新更新