gpt4 book ai didi

python - 处理非常大的数字

转载 作者:行者123 更新时间:2023-11-28 20:46:28 28 4
gpt4 key购买 nike

我需要编写一个简单的程序来计算数学公式。这里唯一的问题是其中一个变量可以取值 10^100。因此我不能用 C++/C 编写这个程序(我不能使用像 gmp 这样的外部库)。几个小时前,我读到 Python 能够计算这些值。我的问题是:为什么

print("%.10f"%(10.25**100))

正在返回数字 "118137163510621843218803309161687290343217035128100169109374848108012122824436799009169146127891562496.0000000000"

代替 "118137163510621850716311252946961817841741635398513936935237985161753371506358048089333490072379307296.453937046171461"

最佳答案

默认情况下,Python 使用固定精度的 float 据类型来表示小数(就像 C 中的 double)。您可以使用 precise rational numbers , 虽然:

>>> from fractions import Fraction
>>> Fraction("10.25")
Fraction(41, 4)
>>> x = Fraction("10.25")
>>> x**100
Fraction(189839102486063226543090986563273122284619337618944664609359292215966165735102377674211649585188827411673346619890309129617784863285653302296666895356073140724001, 1606938044258990275541962092341162602522202993782792835301376)

您还可以使用 decimal模块,如果你想要任意精度的小数(虽然只支持可表示为有限小数的数字):

>>> from decimal import *
>>> getcontext().prec = 150
>>> Decimal("10.25")**100
Decimal('118137163510621850716311252946961817841741635398513936935237985161753371506358048089333490072379307296.453937046171460995169093650913476028229144848989')

关于python - 处理非常大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721636/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com