Wie erhalte ich einen Dezimalwert, wenn den Divisionsoperator in Python?
-
02-07-2019 - |
Frage
Zum Beispiel des Standard-Division Symbol '/' rundet auf Null:
>>> 4 / 100
0
Allerdings möchte ich es 0,04 zurückzukehren. Was kann ich?
Lösung
Es gibt drei Optionen:
>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04
das ist das gleiche Verhalten wie die C, C ++, Java usw., oder
>>> from __future__ import division
>>> 4 / 100
0.04
Sie können auch aktivieren, um dieses Verhalten durch das Argument -Qnew
den Interpreter Python übergeben:
$ python -Qnew
>>> 4 / 100
0.04
Die zweite Option wird der Standard in Python 3.0 sein. Wenn Sie die alte Integer-Division haben wollen, müssen Sie den //
Operator verwenden.
Bearbeiten : hinzugefügt Abschnitt über -Qnew
dank ΤΖΩΤΖΙΟΥ
Andere Tipps
Andere Antworten vorschlagen, wie ein Floating-Point-Wert zu erhalten. Während dies zu schließen sein wlil, was Sie wollen, wird es nicht genau sein:
>>> 0.4/100.
0.0040000000000000001
Wenn Sie tatsächlich eine dezimal wollen Wert, dies tun:
>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
Das wird Sie ein Objekt geben, die richtig weiß, dass 4/100 in Basis 10 "0.04" ist. Gleitkommazahlen sind tatsächlich in der Basis 2, d.h. binär, dezimal nicht.
Erstellen Sie eine oder beide der Begriffe eine Fließkommazahl, etwa so:
4.0/100.0
Alternativ schalten Sie die Funktion, die 3,0, ‚true Division‘ default in Python sein wird, das tut, was Sie wollen. An der Spitze des Moduls oder Skripts tun:
from __future__ import division
Sie könnten Pythons dezimal Paket aussehen wollen, auch. Das wird schön Dezimalergebnisse liefern.
>>> decimal.Decimal('4')/100
Decimal("0.04")
Sie müssen Python sagen Punktwerte zu verwenden, schwebend, nicht ganze Zahlen. Sie können sich einen Dezimalpunkt, dass einfach nicht in den Eingaben unter Verwendung von:
>>> 4/100.0
0.040000000000000001
Versuchen 4.0 / 100
Eine einfache Route 4 / 100.0
oder
4,0 / 100
Hier haben wir zwei mögliche Fälle unter
gegebenfrom __future__ import division
print(4/100)
print(4//100)
Sie könnten auch versuchen, ein“0,0" am Ende der Nummer hinzugefügt wird.
4,0 / 100,0
Sie kann nicht durch Teilen einer ganzen Zahl mit einem anderen einen Dezimalwert bekommen, werden, sind immer eine ganze Zahl, Art und Weise erhalten (Ergebnis abgeschnitten zu integer). Sie müssen mindestens einen Wert eine Dezimalzahl sein.
Fügen Sie die folgende Funktion in Ihrem Code mit seinem Rückruf.
# Starting of the function
def divide(number_one, number_two, decimal_place = 4):
quotient = number_one/number_two
remainder = number_one % number_two
if remainder != 0:
quotient_str = str(quotient)
for loop in range(0, decimal_place):
if loop == 0:
quotient_str += "."
surplus_quotient = (remainder * 10) / number_two
quotient_str += str(surplus_quotient)
remainder = (remainder * 10) % number_two
if remainder == 0:
break
return float(quotient_str)
else:
return quotient
#Ending of the function
# Calling back the above function
# Structure : divide(<divident>, <divisor>, <decimal place(optional)>)
divide(1, 7, 10) # Output : 0.1428571428
# OR
divide(1, 7) # Output : 0.1428
Diese Funktion arbeitet auf der Grundlage von „Euclid Divisions-Algorithmus“. Diese Funktion ist sehr nützlich, wenn Sie keine externen Header-Dateien in Ihrem Projekt importieren möchten.
Syntex: divide ([divident], [Divisor], [Dezimalstelle (optional))
Code: divide(1, 7, 10)
OR divide(1, 7)
Kommentar unten für alle Fragen.
Import Abteilung von zukünftigen Bibliothek wie folgt aus:
from__future__ import division