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?

War es hilfreich?

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

gegeben
from __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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top