python无法将非常小的十进制数转换为log

2024-06-28 20:03:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是一个函数,它通过创建非常小的值来乘以概率。我使用decimal.Decimal模块来处理它,然后当计算完成后,我使用math.log模块/函数将十进制数转换为logofOdds。但是,在一定的概率下,python无法将这些非常小的概率转换为对数2或10的似然比。在

我得到了ValueError: math domain error

在这个值被打印出来之前

2.4876626750969332485460767406646530276378975654773588506772125620858727319570054153525540357327805722211631386444621446226193195409521079089382667946955357511114536197822067973513019098983691433561051610219726750413489309980667312714519374641433925197450250314924925500181809328656811236486523523785835600132361529950090E-366

其他类似这样的小数字由math.log处理,但在同一个程序中: 5.0495856951184114023890172277484001329118412629157526209503867218204386939259819037402424581363918720565886924655927609161379229574865468595907661385853201472751861413845827437245978577896538019445515183910587509474989069747817303700894727201121392323641965506674606552182934813779310061601566189062725979740753305935661E-31

是真的吗?有办法解决这个问题吗。我知道我可以记下问题的日志,然后一路汇总,但当我尝试这样做时,似乎我必须更新程序中的几个地方——可能需要几个小时或几天的时间。还有另一个过程把它转换回十进制。在

谢谢


Tags: 模块函数程序logdomain对数数字error