2017-07-06 3 views
3

Je travaille avec des chiffres de 18 décimales, j'ai décidé d'enregistrer le numéro en tant que « NUMERIC (36) » dans la baseDiviser un grand nombre dans postgresql

Maintenant, je veux présenter en faisant le vote suivant

select (5032345678912345678::decimal/power(10, 18)::decimal)::decimal(36,18) 

résultat 5,032345678912345700

résultat attendu 5,032345678912345678

Il fonctionne si j'utilise une précision de 16 décimales

select (50323456789123456::decimal/power(10, 16)::decimal)::decimal(36,16) 

résultat 5,0323456789123456

Toute idée comment travailler avec 18 décimales sans perte d'information?

Répondre

1

Utilisez une constante typée comme decimal(38,18):

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

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

Une constante devrait être un peu plus rapide. Cependant, la même distribution devrait également fonctionner pour power(10,18).

+0

Merci, je me suis tellement concentré sur l'utilisation de la fonction pow(), car je garde la précision en base de données qui ne sonde pas avec une constante. Cordialement –