it-swarm.com.de

Wie erhalte ich einen Dezimalwert, wenn Sie den Divisionsoperator in Python verwenden?

Zum Beispiel wird das Standard-Divisionssymbol '/' auf Null gerundet:

>>> 4 / 100
0

Ich möchte jedoch, dass es 0,04 zurückgibt. Was benutze ich

58
Ray Vega

Es gibt drei Möglichkeiten:

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04

dies ist das gleiche Verhalten wie bei C, C++, Java usw. oder 

>>> from __future__ import division
>>> 4 / 100
0.04

Sie können dieses Verhalten auch aktivieren, indem Sie das Argument -Qnew an den Python-Interpreter übergeben:

$ python -Qnew
>>> 4 / 100
0.04

Die zweite Option ist die Standardeinstellung in Python 3.0. Wenn Sie die alte Ganzzahldivision haben möchten, müssen Sie den Operator // verwenden. 

Edit: Abschnitt zu -Qnew hinzugefügt, dank ΤΖΩΤΖΙΟΥ !

121
Torsten Marek

Andere Antworten schlagen vor, wie man einen Gleitkommawert erhält. Während dies nah an dem ist, was Sie wollen, ist es nicht genau:

>>> 0.4/100.
0.0040000000000000001

Wenn Sie tatsächlich einen Dezimal Wert haben möchten, machen Sie folgendes:

>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")

Dadurch erhalten Sie ein Objekt, das richtig weiß, dass 4/100 in base 10 "0,04" ist. Fließkommazahlen befinden sich tatsächlich in Basis 2, d. H. Binär, nicht dezimal.

24
Glyph

Machen Sie einen oder beide Begriffe zu einer Fließkommazahl, wie folgt:

4.0/100.0

Aktivieren Sie alternativ die Funktion, die standardmäßig in Python 3.0 (True Division) verwendet wird. Führen Sie oben in Ihrem Modul oder Skript folgende Schritte aus:

from __future__ import division
7
Thomas Wouters

Vielleicht möchten Sie sich auch das Paket decimal von Python ansehen. Dies liefert schöne dezimale Ergebnisse.

>>> decimal.Decimal('4')/100
Decimal("0.04")
4
S.Lott

Sie müssen Python anweisen, Gleitkommawerte zu verwenden, keine ganzen Zahlen. Sie können dies einfach tun, indem Sie in den Eingaben selbst ein Dezimalzeichen verwenden:

>>> 4/100.0
0.040000000000000001
3
moonshadow

Versuchen Sie 4.0/100

1
Martin Cote

Eine einfache Route 4/100.0 

oder

4,0/100

1
torial

Hier haben wir zwei mögliche Fälle 

from __future__ import division

print(4/100)
print(4//100)
1

Sie können auch versuchen, eine ".0" am Ende der Nummer einzufügen.

4,0/100,0

1
Appu

Sie können keinen Dezimalwert erhalten, indem Sie eine ganze Zahl durch eine andere teilen, und Sie erhalten auf diese Weise immer eine ganze Zahl (das Ergebnis wird als Ganzzahl abgeschnitten). Sie benötigen mindestens einen Wert, um eine Dezimalzahl zu sein.

0
Vasil

Fügen Sie Ihrem Code die folgende Funktion mit dem Rückruf hinzu.

# 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 Basis des "Euclid Division Algorithm". Diese Funktion ist sehr nützlich, wenn Sie keine externen Header-Dateien in Ihr 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.

0
DaredevilRanon