微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL round(v numeric,s int)

Postgres round(v numeric,s int)使用哪个 method

>回合一半
>减半
>距离零点一半
>将一半归零
>一半到一半
>圆半到奇数

我正在寻找文档参考.

对不起,我在文档中没有看到任何暗示,但是 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] 举报,一经查实,本站将立刻删除。

相关推荐