2017-07-06 24 views
3

我與18位小數號碼的工作劃分大的數字,我已經決定要保存在數據庫作爲「NUMERIC(36)」,數字PostgreSQL中

現在我想通過以下操作師

呈現它
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位小數,而不會丟失信息的工作精度?

回答

1

使用恆定類型爲decimal(38,18)

select 5032345678912345678::decimal/1000000000000000000::decimal(38,18); 

     ?column?  
---------------------- 
5.032345678912345678 
(1 row) 

常量應該是快了些。然而,相同的演員也應該爲power(10,18)工作。

+0

謝謝,我非常專注於使用pow()函數,因爲我保持數據庫中的精度不會以常量進行探測。問候 –