Skip to main content
 首页 » 编程设计

math.log 函数中的 python 数学域错误

2023年05月26日16虾米姐

我必须使用 Python math.log(x) 函数,其值为 (0, ..., 1) 中的 x。有时 x 可能太接近于零,Python 给我一个错误:

ValueError: math domain error

我怎么知道,math.log函数的定义域是什么?

请您参考如下方法:

只要你的输入在半开区间(0, 1](不包括0)内就可以了,不能太接近零:

>>> math.log(sys.float_info.min) 
-708.3964185322641 

所以简单地检查是否为零(可能是下溢的结果)就足够了,或者捕获异常并处理它。

编辑:这也适用于非正规最小 float :

>>> math.log(sys.float_info.min * sys.float_info.epsilon) 
-744.4400719213812