为什么这个部门不能在Python中工作?

考虑:

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

我如何使它返回一个小数?

在版本3之前,Python的除法运算符/在提供两个整数参数时performance得像C的除法运算符:它返回一个整数结果,当有一个小数部分时,结果被截断。 见: PEP 238

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

在Python 2(也许更早)中,您可以使用:

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

在Python 2.x中,除法的工作方式类似于类似C的语言:如果两个参数都是整数,结果会被截断为整数,所以29/1009为0,因为float为0.0。 为了解决这个问题,在划分之前先将其转换为浮点数

 print str(float(numerator)/denominator) 

在Python 3.x中,除法运算更自然,所以您将得到正确的math结果(在浮点错误内)。

在你的评价中,你正在投射结果,你需要改为投掷操作数。

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