Heim > Artikel > Backend-Entwicklung > Wie kann ich einen Float-Wert in Python kürzen, ohne das Ergebnis zu runden?
So entfernen Sie Ziffern aus einer Gleitkommazahl und haben eine feste Anzahl von Nachkommastellen, z. B. Konvertieren von 1,923328437452 in 1,923 können Sie die folgende Funktion verwenden:
def truncate(f, n): '''Truncates/pads a float f to n decimal places without rounding''' s = '{}'.format(f) if 'e' in s or 'E' in s: return '{0:.{1}f}'.format(f, n) i, p, d = s.partition('.') return '.'.join([i, (d+'0'*n)[:n]])
Diese Funktion erreicht eine Kürzung, indem sie den Gleitkommawert in einen String umwandelt, ihn in Ganzzahl-, Dezimalpunkt- und Dezimalstellenkomponenten aufteilt und diese dann mit der gewünschten Zahl neu kombiniert von Dezimalstellen. Wenn die Gleitkommazahl zu groß oder zu klein ist, um ohne Exponentialschreibweise dargestellt zu werden, wird sie zunächst in dieses Format konvertiert.
Hinweis: Diese Funktion ist mit Python 2.7 und 3.1 kompatibel. Für frühere Versionen kann eine etwas ungenauere Problemumgehung verwendet werden, bei der vor der Kürzung auf 12 Dezimalstellen gerundet wird.
Um die Methode hinter der Kürzungsfunktion zu verstehen, ist es wichtig, sie zu erkennen dass Gleitkommazahlen im Speicher des Computers als binäre Darstellung gespeichert werden, die möglicherweise nicht immer genau mit der beabsichtigten Dezimaldarstellung übereinstimmt. Beispielsweise werden sowohl 0,3 als auch 0,29999999999999998 mit derselben Binärdarstellung gespeichert.
Um diese Mehrdeutigkeit aufzulösen, verwendet die Funktion ausgefeilte Algorithmen, um die „schönste“ Dezimaldarstellung für die Kürzung auszuwählen. Dies wird durch die Konvertierung des Floats in einen String mithilfe der standardmäßigen String-Formatierungsoperation erreicht, die die Formatspezifikationen „g“ nachahmt und automatisch die beste Darstellung auswählt.
Es gibt jedoch bestimmte Randfälle, in denen sogar diese Methode zum Ergebnis führen kann in „Falsch-Positiven“, also Zahlen, die nicht gerundet werden sollten. In diesen Fällen kann die Angabe einer festen Genauigkeit vor dem Abschneiden erforderlich sein.
Das Abschneiden einer Gleitkommazahl ohne Rundung ist wichtig, wenn es um sehr spezifische Gleitkommawerte geht, die absichtlich nahe an der Rundung liegen Zahlen, sind ihnen aber nicht gleich. Für die meisten praktischen Anwendungen reicht normalerweise das Runden aus.
Die hier vorgestellte Funktion ignoriert auch verlorene Ziffern beim Abschneiden, was sich vom Runden unterscheidet, bei dem die verbleibenden Ziffern angepasst werden. Dieser Ansatz stellt sicher, dass der gekürzte Wert seine ursprüngliche Genauigkeit an den angegebenen Dezimalstellen behält.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Float-Wert in Python kürzen, ohne das Ergebnis zu runden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!