2016-10-04 1 views

Antwort

1

In Python 2, Trennung zwischen ganzen Zahlen 2 wird eine Ganzzahl (Rundung auf die nächste ganze Zahl auf 0), in diesem Fall zurück, 0. Ihr Code ist im Grunde float(0) was 0.0 ist.

Sie müssten zuerst einen Ihrer Werte in einen Gleitkommawert ändern, wenn Sie einen Gleitkommawert zurückgeben möchten.

Dieses Verhalten wurde in Python 3 geändert, wobei die Division zwischen 2 Ganzzahlen einen Gleitkommawert zurückgibt, in diesem Fall 0.8.

0

4/5 0 zurück, weil es eine int Division ist, dann werfen Sie schwimmen auf 0

0

Wegen der Integer-Division .... zwei ganze Zahlen dividiert werden zurückkehren und integer. Der Wert 0.8 wird auf 0 gekürzt.

Sie müssen eine Ihrer Ganzzahlen zu einem Gleitkommawert erhöhen, wenn Sie eine Fließkommaantwort wünschen.

E.G.

c = Schwimmer (a)/b

+0

Es ist nicht abgeschnitten. '4/5' ergibt bereits' 0'. –

3

Das ist, weil dies eine Integer-Division ist:

>>> 4/5 
0 

wenn Sie 0.8, einer vor der Teilung schweben die beiden werfen zu wollen:

>>> 4/float(5) 
0.8 
1

In Python 2 / gibt nur integer-Teil, wenn Sie zwei ganze Zahlen - wie int(0.8). Sie müssen float ie verwenden. float(a) oder 4.0 (kurz 4.) oder * 1.0

print float(4)/5 
print 4/float(5) 

print 4.0/5 
print 4/5.0 

print 4./5 
print 4/5. 

print a*1.0/b # sometimes you can see this method 
print a/(b*1.0) # this version need() - without() you get (a/b)*1.0 
2

Wenn Sie Float in einer der Variablen nicht einführen möchten. Sie könnten dies tun:

from __future__ import division 

4/5 

Dies wird geben, was Sie für 0,8 suchen, ohne Floating einzuführen.