J'ai une table avec 3 colonnes: Exemple de valeurs pour courant_balance: p> Je veux qu'ils affichent comme ceci: P> SELECT to_char(current_balance,'9999999999999999D99')
FROM bank;
3 Réponses :
>>> import psycopg2 >>> conn = psycopg2.connect(host='localhost', database='scratch', user='',password='') >>> c = conn.cursor() >>> c.execute("select to_char(dbl, '9999999999999999D99') from practice where id = 1;") >>> c.fetchall() # with padding [(' 12345.68',)] >>> c.execute("select to_char(dbl, 'FM9999999999999999D99') from practice where id = 1;") >>> c.fetchall() # no padding [('12345.68',)] >>> c.execute("select to_char(dbl, 'FML9999999999999999D99') from practice where id = 1;") >>> c.fetchall() # with locale-specific currency symbol [('$12345.68',)]
Salut Charles .. Si mon enregistrement d'entrée est 0 (zéro) à ce moment-là qu'il donne .00 seulement. Mais je veux 0.00 Comment puis-je faire ça ..?
Je ne sais pas, en fait. J'apprends toujours tous les outs de Postgres. Si tout le reste échoue, vous pouvez essayer un cas code> code> que vérifiez si le nombre est zéro et renvoie '0.00' si oui.
Tard à la fête, mais quelqu'un devrait probablement mentionner "99 ... 0d99 "comme solution possible à la condition de 0,00.
Comme déjà signalé dans un commentaire, C'est décimal code> a > à la place. p>
Ok merci ... Je note vos points et ici après que je vais utiliser décimal.
@ungalnanban: Cela concerne des erreurs d'arrondi lorsque vous n'utilisez pas Decimal, de sorte que vous feriez mieux de le faire, car si les sommes comptables sont fausses, toute conversion à chaîne à chaîne sera votre problème moindre ...
Arrêtez-vous là où vous êtes. Soigneusement Lire la section sur la manière dont les doubles sont traités à Postgrest < / a>. Les doubles sont traités comme des valeurs de points flottants. Les flotteurs sont stockés et calculés de manière à perdre de la précision. N'utilisez pas de valeur de point flottante pour stocker une valeur monétaire. Utilisez le
numérique code> ou
décimal code> types.