我在一个使用EXP(x)函数的查询中收到超出范围的值:来自pgsql的下溢错误。 x的什么值会触发这个?如何预防或检测它?
答案 0 :(得分:2)
函数exp称为指数函数,其反函数是自然对数,或对数e的对数。数e通常也被定义为自然对数的基数
换句话说,exp(x)和e ^ x是相同的函数。但是,由于e是一个超越数,因此是不合理的,因此不能准确地给出它的值。
截断到10位小数的e的数值是2.71828 1828
因此,函数exp(x)在技术上对x的所有值都有效,但实际上,您可以限制它们。例如,如果将它们限制为+/- 700,则应覆盖范围
的所有情况exp(700) = 1.01423205 × 10^304
exp(-700) = 9.85967654 × 10^-305
更多信息取决于您的应用
答案 1 :(得分:1)
我正在使用的解决方法是使用'CASE'来计算我的参数的检查范围,而不是如果它超出合理的范围则回退到默认值:
SELECT CASE WHEN p > 100 THEN 0
ELSE .1 ^ p
END;