gpt4 book ai didi

python无法将非常小的小数转换为日志

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:45 25 4
gpt4 key购买 nike

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

我收到 ValueError: math domain error

所以,我在回溯开始之前打印了这个值,它似乎是这个数字:

2.487662675096933248546076740664653027637897565477358850677212562085872731957005415352554035732780572221163138644416214940122214936222 89382667946955357511114536197822067973513019098983691433561051610219726750413489309980667312714519374641433925197450250281856024 1236486523523785835600132361529950090E-366

像这样的其他小数字正在通过 math.log 在同一个程序中处理:5.0495856951184114023890172277484001329118412629157526209503867218204386939259819037402424581363918720565886924655927760859265651 90766138585320147275186141384582743724597857789653801944551518391058750947498906974781730370089472720112139232364196555065674118606 61601566189062725979740753305935661E-31

这是真的吗?有任何解决这个问题的方法吗。我知道我可以获取概率日志,然后一路求和,但是当我尝试这样做时,似乎我必须更新我程序中的几个地方——可能需要数小时或数天。并且还有另一个过程将其转换回十进制。

谢谢,

最佳答案

如果您想对 Decimal 对象取对数,请使用 lnlog10方法。除了 weird special case for huge ints , math.log 将输入转换为 float 。

whatever_decimal.ln()

关于python无法将非常小的小数转换为日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479798/

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