Gibt es eine pythonische Möglichkeit, eine Zahl 1234.5678
in zwei Teile aufzuteilen, (1234, 0.5678)
dh den ganzzahligen Teil und den dezimalen Teil?
split
floating-point
python
Doppelte AA
quelle
quelle
int
als Variablenname verwenden, da dies dieint
Funktion überschreibt .int_
Sie diese Option, wenn Sie eine Variable benötigen , die beim Vorlesen "int" heißt.Wir können eine nicht berühmte eingebaute Funktion verwenden; divmod:
quelle
divmod(-4.5,1)
ergibt -5,0 und 0,5. Die Verwendungdivmod(-4.5, -1)
ergibt 4.0 und -0.5.Wenn Sie den Integer-Teil als Integer und nicht als Float verwenden möchten, verwenden Sie
int(a//1)
stattdessen. So erhalten Sie das Tupel in einer einzigen Passage:(int(a//1), a%1)
BEARBEITEN: Denken Sie daran, dass der Dezimalteil einer Gleitkommazahl ungefähr ist. Wenn Sie ihn also so darstellen möchten, wie es ein Mensch tun würde, müssen Sie die Dezimalbibliothek verwenden
quelle
-2.25 // 1 == -3.0
und-2.25 % 1 == 0.75
. Dies kann das sein, was das OP möchte, da int part + decimal part immer noch dem ursprünglichen Wert entspricht. Im Gegensatz dazumath.modf(-2.25) == (-0.25, -2.0)
.Funktioniert für positive Zahlen.
quelle
In [1]: value = 1.89
In [2]: intpart,decimalpart = int(value),value-int(value)
In [3]: intpart
Out [3]: 1
In [4]: decimalpart
Out [4]: 0.8899999999999999
Diese Variante ermöglicht es, die gewünschte Präzision zu erzielen:
quelle
Das funktioniert auch bei mir
quelle
So mache ich das:
quelle
Wenn es Ihnen nichts ausmacht, NumPy zu verwenden, dann:
quelle
Nachdem ich mir einige der Antworten angesehen habe. Ich habe mir diese beiden Aussagen ausgedacht, mit denen positive und negative Zahlen in Ganzzahl- und Bruchteile unterteilt werden können, ohne die Genauigkeit zu beeinträchtigen. Der Leistungstest zeigt, dass die beiden neuen Anweisungen schneller sind als
math.modf
, solange sie nicht in ihre eigene Funktion oder Methode eingefügt werden.ZB
100.1323
->100, 0.1323
und-100.1323
->-100, -0.1323
Testskript:
Ausgabe:
HINWEIS:
Die Anweisung kann mit Modulo schneller sein, aber Modulo kann nicht verwendet werden, um negative Zahlen in Ganzzahl- und Bruchteile aufzuteilen.
quelle