我正在尝试在Python中计算e的-1200次方(这只是一个例子,我不需要特定的-1200,而是一组接近-1200的数字)。
>>> math.exp(-1200)
0.0
我的程序出现了下溢,该怎么解决这个问题?
谢谢任何帮助 :)
我正在尝试在Python中计算e的-1200次方(这只是一个例子,我不需要特定的-1200,而是一组接近-1200的数字)。
>>> math.exp(-1200)
0.0
我的程序出现了下溢,该怎么解决这个问题?
谢谢任何帮助 :)
decimal
模块:>>> import decimal
>>> decimal.Decimal(-1200)
Decimal('-1200')
>>> decimal.Decimal(-1200).exp()
Decimal('7.024601888177132554529322758E-522')
如果您需要比 decimal
库提供的更多功能,您可以查看我经常使用和喜欢的 mpmath
库:
>>> import mpmath
>>> mpmath.exp(-1200)
mpf('7.0246018881771323e-522')
>>> mpmath.mp.dps = 200
>>> mpmath.exp(-1200)
mpf('7.0246018881771325545293227583680003334372949620241053728126200964731446389957280922886658181655138626308272350874157946618434229308939128146439669946631241632494494046687627223476088395986988628688095132e-522')
但是如果可能的话,您应该尝试看看是否可以将方程完全转换为对数空间。
e^(log a)/(e^(log a) + e^log(b))
不就是简单地等于 a/(a+b)
吗? - DSMe^(log a)/(e^(log a) + e^log(b))=1/(1+e^(log(b)-log(a)))
。 - Teepeemm