在postgresql中划分大数
Dividing large numbers in postgresql
我正在处理 18 位小数的数字,我决定将该数字作为 "NUMERIC (36)" 保存在数据库中
现在我想通过下面的划分来展示它
select (5032345678912345678::decimal / power(10, 18)::decimal )::decimal(36,18)
结果
5.032345678912345700
预期结果
5.032345678912345678
如果我使用 16 位小数的精度就可以了
select (50323456789123456::decimal / power(10, 16)::decimal )::decimal(36,16)
结果 5.0323456789123456
知道如何在不丢失信息的情况下处理 18 位小数吗?
使用类型为 decimal(38,18)
:
的常量
select 5032345678912345678::decimal / 1000000000000000000::decimal(38,18);
?column?
----------------------
5.032345678912345678
(1 row)
常量应该快一点。但是,相同的转换也适用于 power(10,18)
。
我正在处理 18 位小数的数字,我决定将该数字作为 "NUMERIC (36)" 保存在数据库中
现在我想通过下面的划分来展示它
select (5032345678912345678::decimal / power(10, 18)::decimal )::decimal(36,18)
结果 5.032345678912345700
预期结果 5.032345678912345678
如果我使用 16 位小数的精度就可以了
select (50323456789123456::decimal / power(10, 16)::decimal )::decimal(36,16)
结果 5.0323456789123456
知道如何在不丢失信息的情况下处理 18 位小数吗?
使用类型为 decimal(38,18)
:
select 5032345678912345678::decimal / 1000000000000000000::decimal(38,18);
?column?
----------------------
5.032345678912345678
(1 row)
常量应该快一点。但是,相同的转换也适用于 power(10,18)
。