提问人:filidibava 提问时间:10/6/2023 最后编辑:rioV8filidibava 更新时间:10/6/2023 访问量:56
当处理 e-325 阶数字时,“十进制”python 模块返回“0”
When working with numbers of order e-325 'decimal' python module returns '0'
问:
我正在尝试实现一个表示为幂级数的函数。 它的形式是:
问题与分子上的项 t_min 和 t_max有关:当 s 变大时,这两个项都开始给我 e-324 阶的值,然后当它应该是 e-325 时,python 返回值 0。 我知道它与 python 的最大精度有关,因此我尝试使用“decimal”模块,但它不起作用。例如,如果我尝试如下操作:
from decimal import Decimal, getcontext
getcontext().prec = 400
a = Decimal(10**(-325))
b = Decimal(10**(-325))
总和返回:
a+b
Decimal('0')
答:
1赞
rioV8
10/6/2023
#1
10**(-325)
是一个普通的双精度值,用于初始化 、 so 和 are 两者Decimal
a
b
Decimal('0')
你必须构造小数
from decimal import Decimal, getcontext
getcontext().prec = 400
a = Decimal(10)**Decimal(-325)
b = Decimal(10)**Decimal(-325)
现在结果a+b
Decimal('2E-325')
评论
10**(-325)
Decimal
Decimal