我必须使用 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