我想将值除以并将它们四舍五入到小数点后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 fiddle:http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/1534
感谢您的帮助。 最好,
答案 0 :(得分:2)
评论太长了。
实际上,当我使用pgadmin在Postgres 9.3.4中尝试你的代码时,都返回你想要的值。值以指数表示法不。因此,我怀疑这是您的应用程序的问题,而不是数据库。
一种简单的检查方法是将值作为字符串:
select round( 1/100000000::decimal, 8 )::text
这应该不返回指数表示法。
答案 1 :(得分:0)
可能第二种情况超出了精确范围8。
您可以查看此问题Selecting floating point numbers in decimal form
您使用的是什么版本,因为在pgAdmin 9.2中我得到了不同的结果