13 Stimmen

python truncate nach einem Hunderter?

Wie kann eine Eingabe wie 315.15321531321 abgeschnitten werden? Ich möchte alle Werte nach der Hundertstelstelle abschneiden, so dass es 315,15 wird.

Wie kann ich das tun?

1voto

Zxaos Punkte 7341

Sie haben mehrere Möglichkeiten: Sie können die Zahl mit round() runden, was jedoch zu Ungenauigkeiten führen kann (315,15 könnte z. B. auf 315,150000003 gerundet werden). Wenn Sie nur den Wert des Floats bei der Anzeige abschneiden wollen, können Sie die Breite der Ausgabe mit printf("%.2f", mynumber) angeben. Dies ist wahrscheinlich die bessere Lösung, denn ohne mehr über Ihre spezielle Anwendung zu wissen, ist es im Allgemeinen eine gute Idee, die gesamte Länge der Zahl für die Berechnung zu verwenden.

0voto

Kenan Banks Punkte 196831

Eingebaute Funktion round() :

>>> num = 315.1532153132
>>> round(num, 2)
3.1499999999999998

0voto

Neil C. Obremski Punkte 16937

Bei der Arbeit mit Decimal Typen und Währungen, bei denen der Betrag genau sein muss, habe ich folgende Lösung gefunden, um auf Cents (Hundertstel) abzuschneiden:

amount = Decimal(long(amount * 100)) / Decimal(100)

Eine kleine Geschichte : Ich habe versucht quantize aber es neigt dazu, eher zu runden als abzuschneiden. Und ich konnte nicht mit gutem Gewissen teure String-Formatierer für etwas so Einfaches verwenden. Und schließlich wollte ich keine Präzisionsprobleme à la float Daher verwende ich sehr spezielle Gussformen, die wahrscheinlich zu viel des Guten sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X