postgresql 轮除法

use*_*679 2 sql postgresql

我想对值进行除法并将其四舍五入到小数点后 8 位,但我发现某些除法以科学记数法返回。

我怎样才能在没有科学记数法的情况下得到舍入除法?

  • select round( 123/100000000::decimal, 8 )

    0.00000123按预期返回。

  • select round( 1/100000000::decimal, 8 )

    返回1e-8但是...我期待着0.00000001

我如何将 1/100000000 四舍五入到小数点后 8 位并返回0.00000001

sql小提琴:http://sqlfiddle.com/#!15 /9eecb7db59d16c80417c72d1e1f4fbf1/1534

感谢帮助。最好的,

Gor*_*off 6

实际上,当我使用 pgAdmin 在 Postgres 9.3.4 中尝试你的代码时,两者都返回你想要的值。这些值采用指数表示法。因此,我怀疑这是您的应用程序的问题,而不是数据库的问题。

一种简单的检查方法是将值作为字符串:

select round( 1/100000000::decimal, 8 )::text
Run Code Online (Sandbox Code Playgroud)

应该返回指数表示法。