2008-09-22 17 views

Antwort

102

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 ΤΖΩΤΖΙΟΥ!

+1

Bitte beachten Sie auch hinzufügen die Verfügbarkeit von 'Python -Q new' Kommandozeilenoption, um Ihre Antwort vollständiger zu machen. – tzot

+0

Dies gibt einen Fließkommawert, keinen Dezimalwert. Sieh Glyphs Antwort. – Jim

+0

Sie können auch 'from __future__ import division' im Quellcode verwenden. –

1

Versuchen 4,0/100

1

eine einfache Route 4/100,0

oder

4,0/100

3

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 
7

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 
0

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.

+0

Bitte beachten Sie, dass dies in Python 3.0 nicht mehr der Fall sein wird, wenn Sie/verwenden. –

23

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.

3

Vielleicht möchten Sie sich auch Pythons decimal Paket ansehen. Dies wird schöne Dezimal-Ergebnisse liefern.

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

Bitte beachten Sie, folgende Beispiel

float tot=(float)31/7; 
+3

... das ist nicht einmal Python. – Moira

1

Hier haben wir zwei mögliche Fälle unten

from __future__ import division 

print(4/100) 
print(4//100) 
+0

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 –

-3

Import Division aus zukünftigen Bibliothek wie folgt aus:

+1

Bitte fügen Sie Details, warum dies das ursprüngliche Problem lösen würde, und vielleicht welche Nachteile dieser Ansatz hat. – Murphy

+0

@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. –

+0

@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 –