将双列转换为数字 Postgres - 是四舍五入还是截断?

问题描述 投票:0回答:1

我在 Postgres 中有一个表被(错误地)定义为 double。 我需要将该字段转换为数字(6,4)。

转换完成后表中的值是否会四舍五入或截断?

例如,23.999999 会转换为 24 或 23.9999 吗?

尝试确定是否可以简单地更改列,或者是否还需要重新加载数据

感谢您的帮助!

postgresql sqldatatypes
1个回答
0
投票

从这里数字类型

如果要存储的值的小数位数大于该列声明的小数位数,系统会将该值四舍五入到指定的小数位数。

所以:

select 23.999999::double precision::numeric(6,4); 24.0000

如果你想保留小数点右边的部分,那么:

select '23.999999'::numeric;
  numeric  
-----------
 23.999999

--Or

select '23.999999'::numeric(8,6);
  numeric  
-----------
 23.999999

© www.soinside.com 2019 - 2024. All rights reserved.