postgresql圆形分区

postgresql圆形分区,sql,postgresql,Sql,Postgresql,我想对值进行除法并将其四舍五入到小数点后8位,但我发现有些除法返回的是科学记数法 没有科学记数法,我怎么总是能得到整数除法呢 选择四舍五入(123/100000000::十进制,8) 按预期返回0.00000123 选择四舍五入(1/100000000::十进制,8) 返回1e-8但。。。我期望0.00000001 如何将1/100000000四舍五入到小数点后8位并返回0.00000001 sql fiddle: 谢谢你的帮助。 最好,第二种情况可能超出精度范围8 你可以检查这个问题 另外

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

没有科学记数法,我怎么总是能得到整数除法呢

  • 选择四舍五入(123/100000000::十进制,8)

    按预期返回
    0.00000123

  • 选择四舍五入(1/100000000::十进制,8)

    返回
    1e-8
    但。。。我期望
    0.00000001

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

sql fiddle:

谢谢你的帮助。
最好,第二种情况可能超出精度范围8

你可以检查这个问题

另外,您使用的是什么版本,因为在pgAdmin 9.2中,我得到了不同的结果


这条评论太长了

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

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

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

这不应返回指数表示法。

我认为默认刻度为6。尝试使用类似于
decimal(18,8)
@GordonLinoff的方法,不要太过有效。请参阅:
1e-8
0.00000001
是一回事,不是吗?您使用的是什么客户端应用程序?精确的PostgreSQL版本(从
SELECT version()
?PostgreSQL v9.4..看你是对的,强制转换为文本返回的值不是指数/科学符号。对于仅显示值(而不是计算),这是我需要的。更新的sqlfiddle演示如下: