Sat*_*ish 2 database postgresql postgresql-9.0 postgresql-9.1
我在postgresql中面临指数函数的问题.如果我使用这个select语句select exp(5999),我会得到:
ERROR: value out of range: overflow
SQL state: 22003
Run Code Online (Sandbox Code Playgroud)
如果我使用这个select语句select exp(5999.1),我会得到指数结果.
在其他情况下,如果我使用此语句select exp(9999.1),我收到以下错误:
ERROR: argument for function "exp" too big
SQL state: 22003
Run Code Online (Sandbox Code Playgroud)
请让我知道为什么会出现这个问题以及这类问题的解决方案是什么?
我认为你的第一个问题是由输出类型exp()与输入类型相同的事实引起的.因为你使用了一个整数值,所以它抱怨结果不适合整数.
这可能是浮点类型具有更大范围的原因exp(5999.1),也可能是exp(5999.0)有效的.
你的第二个错误略有不同,它在计算过程中抱怨不是溢出,而是输入参数太大的事实.它可能在某处对输入进行了一些健全性检查.
甚至浮点值最终也会超出范围.e 9999大概在10 4300左右,这是一个相当大的数字,可能远远超出了你期望在数据库应用程序中看到的数字.
实际上,我对数据库应用程序中如此大数字的用例感兴趣.这听起来像更好适合BIGNUM包东西一样MPIR.