在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)