4

我在使用 EXP(x) 函数的查询中收到一个超出范围的值:来自 pgsql 的下溢错误。x 的什么值触发了这个?如何预防或检测它?

4

2 回答 2

4

函数 exp 称为指数函数,它的逆是自然对数,或以 e 为底的对数。数字 e 通常也被定义为自然对数的底

换句话说,exp(x) 和 e^x 是同一个函数。然而,由于 e 是一个超越数,因此是无理数,它的值不能准确给出。

e 截断到小数点后 10 位的数值是 2.71828 1828

因此,函数 exp(x) 在技术上对 x 的所有值都有效,但实际上,您可以限制它们。例如,如果您将它们限制为 +/- 700,您应该涵盖涵盖该范围的所有情况

exp(700) = 1.01423205 × 10^304
exp(-700) = 9.85967654 × 10^-305

不仅如此,还取决于您的应用程序

于 2009-01-29T15:18:30.993 回答
1

我正在使用的一种解决方法是使用“CASE”来检查我的参数的范围,而不是在超出合理范围时回退到默认值:

SELECT CASE WHEN p > 100 THEN 0
       ELSE .1 ^ p
       END;
于 2013-07-08T18:37:59.880 回答