请看下面的代码,注意在
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
会悄无声息地发生是有问题的。
我在Python 3.7.3中运行了上面的代码。