Ich schreibe eine Klasse, um Geld zu vertreten, und ein Problem, das ich lief, ist, dass "1.50" != str(1.50)
. str (1,50) ist gleich 1,5 und plötzlich POOF. 45 Cent sind verschwunden und der Betrag beträgt jetzt 1 Dollar und 5 Cent. kein Dollar und 50 Cent. Kann ich das verhindern oder mache ich etwas falsch? Dies ist Python 2 BTW.Keep Trailing Nullen in Python
Antwort
Wenn Sie mit Geld arbeiten, repräsentieren Sie immer Geld mit der Dezimalklasse.
Beat mich dazu :) – Patashu
Sie können die format
Methode auf Strings verwenden, um festzulegen, wie viele Dezimalstellen Sie darstellen möchten:
>>> "{:.2f}".format(1.5)
'1.50'
Aber noch besser wäre die decimal module
für die Darstellung von Geld zu verwenden, da Darstellung Probleme mit binären Fließkommawerten können zu etwas schlechteren Ergebnissen führen, wenn Sie arithmetisch arbeiten. Die Dokumentation für das Modul erwähnt einige dieser Fragen speziell - eine der interessantesten für Geld Anwendungen ist:
>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
>>> from decimal import Decimal
>>> Decimal('.1') + Decimal('.1') + Decimal('.1') - Decimal('.3')
Decimal('0.0')
Oder nur '"% .2f "% 1.5' – grc
x = 1.500000
print '%.2f' % x
print '{:.3f}'.format(x)
Ergebnis
1.50
1.500
- 1. Erstellen multidimensionaler Nullen Python
- 2. Keep-Alive in Python-Anfragen Modul
- 3. Auto-Trailing-Rückgabetyp?
- 4. seltsame Trailing Schrägstrich Problem
- 5. Trailing Array Idiom
- 6. Wie "keep-alive" mit cookielib und httplib in Python?
- 7. Mod-rewrite Trailing Slash Problem
- 8. UIlabel Trailing Space funktioniert nicht
- 9. Suche nach Nullen der Gleichung mit Python
- 10. Trailing-Optionen gefunden in der Befehlszeile ffmpeg
- 11. Moving Trailing Woche Durchschnitt in PostgreSQL
- 12. Python - MYSQL - Wählen Sie führende Nullen
- 13. Python fügen führende Nullen mit str.format hinzu
- 14. Wie interpretiert Python Zahlen mit führenden Nullen
- 15. Trailing const & or && on Funktionsdeklaration
- 16. Nginx - Redirect Domain Trailing Dot
- 17. Umgang mit Nullen in Pandas DataFrames Spaltenunterteilungen in Python
- 18. HTTP keep-alive in node.js
- 19. erstellen Sie eine Multichannel-Nullen-Matte in Python mit CV2
- 20. Rundung einer Zahl in Python, aber endende Nullen
- 21. führende Nullen zu einer Liste von Zahlen in Python hinzufügen
- 22. Nullen zu einem Fließkomma nach dem Komma in Python hinzufügen
- 23. Finden Sie aufeinanderfolgende Nullen in Python, basierend auf Zeit
- 24. Negative Nullen in Matlab
- 25. Führende Nullen in C?
- 26. Wie werden führende und nachfolgende Nullen in einer Zeichenfolge entfernt? Python
- 27. Python-Requests (> = 1. *): Wie Keep-Alive deaktivieren?
- 28. 2d Array aus Nullen
- 29. Keep ConfigParser Ausgabedateien sortiert
- 30. Convert.ToInt32 - Keep Preceding Zero
Dies stellt einen wichtigen Punkt: einen Dollar und fünfzig Cent ist ** nicht ** entspricht etwa 1,5 Pfund Gewicht. 1,5 Pfund und 1,50 Pfund sind genau das Gleiche, und Sie interessieren sich selten für den Unterschied zwischen 1,5 Pfund und 1,50001 Pfund. Dies liegt daran, dass "Pfund" eine * kontinuierliche * Menge (Gewicht) misst, während "Cent" eine * diskrete * Menge misst. –
Bad Class Design schlägt wieder ... –