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?
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?
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.
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 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.