为什么Python悄悄地转换为0.0?

2024-04-20 08:07:28 发布

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

注意在下面的代码中,0.0005**99的输出突然变为0.0。你知道吗

In [1]: 0.0005**97                                                              
Out[1]: 6.31e-321

In [2]: 0.0005**98                                                              
Out[2]: 5e-324

In [3]: 0.0005**99                                                              
Out[3]: 0.0

In [4]: 0.0005**100                                                             
Out[4]: 0.0

我希望看到一个Underflow错误或者发生这种情况的某种警告。你知道吗

我用朴素贝叶斯算法编写了一个垃圾邮件过滤器,上面的计算对于长消息来说很常见。尽管我可以添加一些数学上的变通方法,但我仍然认为这种到0.0的“转换”是静默进行的,这是有问题的。你知道吗

我在pyhton3.7.3中运行了上面的代码。你知道吗


Tags: 代码in算法消息警告过滤器错误垃圾邮件
1条回答
网友
1楼 · 发布于 2024-04-20 08:07:28

在Python中,所有浮点舍入都是静默进行的,在这种情况下,您试图表示的最接近的浮点数比最小的浮点数>;0更接近于0。你知道吗

正如一些评论所建议的,使用日志空间将帮助您处理这些非常小的数字的表示。你知道吗

相关问题 更多 >