Warum funktioniert diese Division nicht in Python?

Erwägen:

>>> numerator = 29 >>> denom = 1009 >>> print str(float(numerator/denom)) 0.0 

Wie kann ich eine Dezimalzahl zurückgeben?

Bis Version 3 verhielt sich Pythons Divisionsoperator, /, wie der Division-Operator von C, wenn er mit zwei Integer-Argumenten dargestellt wird: Er gibt ein Integer-Ergebnis zurück, das abgeschnitten wird, wenn es einen Bruchteil geben würde. Siehe: PEP 238

 >>> n = 29 >>> d = 1009 >>> print str(float(n)/d) 0.0287413280476 

In Python 2 (und vielleicht früher) könnten Sie Folgendes verwenden:

 >>> from __future__ import division >>> n/d 0.028741328047571853 

In Python 2.x funktioniert division wie in C-ähnlichen Sprachen: Wenn beide Argumente Integer sind, wird das Ergebnis auf eine ganze Zahl gekürzt, also ist 29/1009 0. 0, da float 0.0 ist. Um es zu reparieren, casting Sie es vor dem Teilen auf einen Schwimmer:

 print str(float(numerator)/denominator) 

In Python 3.x verhält sich die Division natürlicher, sodass Sie das korrekte mathematische Ergebnis (innerhalb des Gleitkommaerrorss) erhalten.

In Ihrer Auswertung wird das Ergebnis umgewandelt, stattdessen müssen Sie die Operanden umwandeln.

 print str(float(numerator)/float(denom))