繁体   English   中英

如何摆脱 python 中的小数溢出...我正在尝试计算魔方对学术项目的可能组合

[英]How to get rid of decimal overflow in python...I am trying to calculate the possible combinations a rubik's cube can have for an academic project

嘿,所以我正在尝试计算 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.00214 2000是一个超过 600 位的数字。 将它乘以大约 3 并减去大约 6 不会有太大变化。

问题是你想提高 10 到这个幂。 这个数字的 10 次方不是一个 600 位的数字,而是一个位数有 600 位的数字。 要将这个数字存储在 memory 中,您需要大约 10 600位。 一个艾字节(假设您可以得到一台具有这么多内存的计算机)只有大约 10 19位。

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

暂无
暂无

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

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