So kürzen Sie Float-Werte auf eine bestimmte Anzahl von Dezimalstellen
In Python können Sie Ziffern aus einem Float entfernen, um einen festen Wert zu erhalten Anzahl der Nachkommastellen. Betrachten Sie das folgende Beispiel:
1.923328437452 → 1.923
Das Abschneiden der Gleitkommazahl auf drei Dezimalstellen führt zur gewünschten Ausgabe von 1,923.
Lösung
Die Funktion unten führt diese Aufgabe aus:
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]])
Erklärung
Die Funktion wandelt die Gleitkommazahl in eine Zeichenfolgendarstellung um und teilt sie in drei Teile auf: den ganzzahligen Teil und den Dezimalpunkt und der Bruchteil. Anschließend wird der Bruchteil mit Nullen bis zur angegebenen Anzahl von Dezimalstellen aufgefüllt, um sicherzustellen, dass alle überzähligen Ziffern abgeschnitten werden.
Umgang mit wissenschaftlicher Notation
Die Funktion prüft, ob Der Gleitkommawert wird in wissenschaftlicher Notation (e oder E) dargestellt und verwendet eine andere Formatfunktion, um den Exponenten beizubehalten.
Ältere Python-Versionen
Für Python-Versionen vor 2.7 können Sie Gleitkommazahlen immer noch abschneiden, aber das Ergebnis ist aufgrund von Einschränkungen im Gleitkommaformatierungsmechanismus möglicherweise nicht so genau. Eine mögliche Problemumgehung besteht darin, den Gleitkommawert vor dem Abschneiden auf eine höhere Genauigkeit zu runden:
def truncate(f, n): '''Truncates/pads a float f to n decimal places without rounding''' s = '%.12f' % f i, p, d = s.partition('.') return '.'.join([i, (d+'0'*n)[:n]])
Das obige ist der detaillierte Inhalt vonWie kürze ich Float-Werte in Python ohne Rundung auf eine bestimmte Anzahl von Dezimalstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!