加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL round(v numeric,s int)

发布时间:2020-12-13 18:04:55 所属栏目:百科 来源:网络整理
导读:Postgres round(v numeric,s int) 使用哪个 method? 回合一半 减半 距离零点一半 将一半归零 一半到一半 圆半到奇数 我正在寻找文档参考. 对不起,我在文档中没有看到任何暗示,但是 a look at the code表示它使用的是距离零的一半;随身携带始终添加到数字中,
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读