Wie kürze ich Float-Werte in Python ohne Rundung auf eine bestimmte Anzahl von Dezimalstellen?

Susan Sarandon
Freigeben: 2024-11-06 00:25:02
Original
263 Leute haben es durchsucht

How to Truncate Float Values to a Specific Number of Decimal Places in Python without Rounding?

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
Nach dem Login kopieren

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]])
Nach dem Login kopieren

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]])
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!