postgresql中的指数问题

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)

请让我知道为什么会出现这个问题以及这类问题的解决方案是什么?

pax*_*blo 5

我认为你的第一个问题是由输出类​​型exp()与输入类型相同的事实引起的.因为你使用了一个整数值,所以它抱怨结果不适合整数.

这可能是浮点类型具有更大范围的原因exp(5999.1),也可能是exp(5999.0)有效的.

你的第二个错误略有不同,它在计算过程中抱怨不是溢出,而是输入参数太大的事实.它可能在某处对输入进行了一些健全性检查.

甚至浮点值最终也会超出范围.e 9999大概在10 4300左右,这是一个相当大的数字,可能远远超出了你期望在数据库应用程序中看到的数字.

实际上,我对数据库应用程序中如此大数字的用例感兴趣.这听起来像更好适合BIGNUM包东西一样MPIR.