Der sicherste Weg, Float in Python in Ganzzahl zu konvertieren?


Answers

Verwenden Sie int(your non integer number) wird es nageln.

print int(2.3) # "2"
print int(math.sqrt(5)) # "2"
Question

Pythons Mathematik-Modul enthält praktische Funktionen wie floor & ceil . Diese Funktionen nehmen eine Gleitkommazahl und geben die nächste Ganzzahl unterhalb oder darüber zurück. Diese Funktionen geben jedoch die Antwort als Fließkommazahl zurück. Beispielsweise:

import math
f=math.floor(2.3)

Jetzt kehrt f zurück:

2.0

Was ist der sicherste Weg, eine Ganzzahl aus diesem Gleitkomma zu erhalten, ohne das Risiko von Rundungsfehlern zu riskieren (zum Beispiel, wenn der Gleitkommawert gleich 1,99999 ist) oder sollte ich vielleicht eine andere Funktion insgesamt verwenden?




Wir kombinieren zwei der vorherigen Ergebnisse:

int(round(some_float))

Dies konvertiert einen Gleitkommawert ziemlich zuverlässig in eine Ganzzahl.




math.floor gibt immer eine ganze Zahl zurück und daher wird int(math.floor(some_float)) niemals zu Rundungsfehlern führen.

Der Rundungsfehler kann jedoch bereits in math.floor(some_large_float) oder sogar beim Speichern einer großen Zahl in einem Float eingeführt werden. (Große Zahlen können ihre Genauigkeit verlieren, wenn sie in Schwimmern gespeichert sind.)




Wenn Sie einen String float in einen int konvertieren müssen, können Sie diese Methode verwenden.

Beispiel: '38.0' bis 38

Um dies in ein int zu konvertieren, können Sie es als Float und dann als int ausgeben. Dies funktioniert auch für Float-Strings oder Integer-Strings.

>>> int(float('38.0'))
38
>>> int(float('38'))
38

Hinweis : Dadurch werden alle Zahlen nach dem Dezimaltrennzeichen entfernt.

>>> int(float('38.2'))
38