对不起,我在文档中没有看到任何暗示,但是
a look at the code表示它使用的是距离零的一半;随身携带始终添加到数字中,从而增加变量的绝对值,无论其符号是什么.一个简单的实验(psql 9.1)证实了这一点:
test=# CREATE TABLE nvals (v numeric(5,2)); CREATE TABLE test=# INSERT INTO nvals (v) VALUES (-0.25),(-0.15),(-0.05),(0.05),(0.15),(0.25); INSERT 0 6 test=# SELECT v,round(v,1) FROM nvals; v | round -------+------- -0.25 | -0.3 -0.15 | -0.2 -0.05 | -0.1 0.05 | 0.1 0.15 | 0.2 0.25 | 0.3 (6 rows)
有趣的是,因为round(v dp)使用了一半的偶数:
test=# create table vals (v double precision); CREATE TABLE test=# insert into vals (v) VALUES (-2.5),(-1.5),(-0.5),(0.5),(1.5),(2.5); INSERT 0 6 test=# select v,round(v) from vals; v | round ------+------- -2.5 | -2 -1.5 | -2 -0.5 | -0 0.5 | 0 1.5 | 2 2.5 | 2 (6 rows)
后一种行为几乎肯定是依赖于平台的,因为它看起来像it uses rint(3) under the hood.
如有必要,您可以随时实施不同的舍入方案.有关示例,请参见Tometzky’s answer.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。