Gre*_*ind 4 python floating-point
所以,我在Python中遇到了一些精确问题.
我想计算这样的函数:
P(x,y) = exp(-x)/(exp(-x) + exp(-y))
Run Code Online (Sandbox Code Playgroud)
其中x和y可能> 1000.Python的math.exp(-1000)(至少在2.6中!)没有足够的浮点精度来处理这个问题.
(另外,我对标题持开放态度!对于这个问题,我想不出一个好的!)
>>> import decimal
>>> decimal.Decimal(-1000).exp()
Decimal('5.075958897549456765291809480E-435')
>>> decimal.getcontext().prec = 60
>>> decimal.Decimal(-1000).exp()
Decimal('5.07595889754945676529180947957433691930559928289283736183239E-435')
Run Code Online (Sandbox Code Playgroud)