Zum Beispiel der Standard-Division Symbol ‚/‘ Runden auf Null:Wie erhalte ich einen Dezimalwert, wenn ich den Divisionsoperator in Python verwende?
>>> 4/100
0
Allerdings mag ich es 0,04 zurückzukehren. Was benutze ich?
Zum Beispiel der Standard-Division Symbol ‚/‘ Runden auf Null:Wie erhalte ich einen Dezimalwert, wenn ich den Divisionsoperator in Python verwende?
>>> 4/100
0
Allerdings mag ich es 0,04 zurückzukehren. Was benutze ich?
Es gibt drei Optionen:
>>> 4/float(100)
0.04
>>> 4/100.0
0.04
, die das gleiche Verhalten wie die C, C++, Java usw. oder
>>> from __future__ import division
>>> 4/100
0.04
Sie können auch, indem man das Argument -Qnew
auf die Python-Interpreter dieses Verhalten aktivieren:
$ python -Qnew
>>> 4/100
0.04
Die zweite Option ist die Standardeinstellung in Python 3.0. Wenn Sie die alte Ganzzahl-Division haben wollen, müssen Sie den Operator //
verwenden.
Bearbeiten: Abschnitt hinzugefügt über -Qnew
, dank ΤΖΩΤΖΙΟΥ!
Versuchen 4,0/100
eine einfache Route 4/100,0
oder
4,0/100
Sie müssen Python sagen, Fließkommawerte zu verwenden, keine ganzen Zahlen. Sie können einen Dezimalpunkt, dass einfach selbst tun, indem Sie in den Eingängen:
>>> 4/100.0
0.040000000000000001
eine oder beide der Begriffe Machen Sie eine Fließkommazahl, etwa so:
4.0/100.0
Alternativ schalten Sie die Funktion, die 3.0 Standard in Python sein wird, ‚echte Division‘, die tut, was Sie wollen . An der Spitze des Moduls oder Skript tun:
from __future__ import division
Sie kann nicht einen Dezimalwert erhalten, indem eine ganze Zahl mit einem anderen teilt, werden Sie Allways bekommen eine ganze Zahl, Art und Weise (Ergebnis abgeschnitten zu integer). Sie benötigen mindestens einen Wert als Dezimalzahl.
Bitte beachten Sie, dass dies in Python 3.0 nicht mehr der Fall sein wird, wenn Sie/verwenden. –
Andere Antworten schlagen vor, wie man einen Gleitkommawert erhält. Während diese Nähe wlil, was Sie wollen, wird es nicht genau sein:
>>> 0.4/100.
0.0040000000000000001
Wenn Sie tatsächlich ein dezimal Wert wollen, dies tun:
>>> import decimal
>>> decimal.Decimal('4')/decimal.Decimal('100')
Decimal("0.04")
, die Ihnen ein Objekt das weiß richtig, dass 4/100 in base 10 ist "0,04". Fließkommazahlen sind tatsächlich in der Basis 2, d. H. Binär, nicht dezimal.
Vielleicht möchten Sie sich auch Pythons decimal Paket ansehen. Dies wird schöne Dezimal-Ergebnisse liefern.
>>> decimal.Decimal('4')/100
Decimal("0.04")
Bitte beachten Sie, folgende Beispiel
float tot=(float)31/7;
... das ist nicht einmal Python. – Moira
Hier haben wir zwei mögliche Fälle unten
from __future__ import division
print(4/100)
print(4//100)
für Python3 müssen Sie nicht, dass Import-Trennlinie nur print-Anweisungen für python2 müssen Sie ausdrücklich Import-Anweisung hinzufügen –
Import Division aus zukünftigen Bibliothek wie folgt aus:
Bitte fügen Sie Details, warum dies das ursprüngliche Problem lösen würde, und vielleicht welche Nachteile dieser Ansatz hat. – Murphy
@Murphy Division-Operator ist in der älteren Version von Python nicht vorinstalliert. Sie müssen die Division nicht importieren, wenn Sie entweder die Version 3.4.3.5 oder 3.6 verwenden. –
@Murphy division operator ist in der älteren Version von python nicht vorinstalliert. Sie müssen die Division nicht importieren, wenn Sie entweder die Version 3.4.3.5 oder 3.6 verwenden –
Bitte beachten Sie auch hinzufügen die Verfügbarkeit von 'Python -Q new' Kommandozeilenoption, um Ihre Antwort vollständiger zu machen. – tzot
Dies gibt einen Fließkommawert, keinen Dezimalwert. Sieh Glyphs Antwort. – Jim
Sie können auch 'from __future__ import division' im Quellcode verwenden. –