为什么这个部门在Python中不起作用?

时间:2009-11-24 01:32:32

标签: python numbers

考虑:

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

如何让它返回小数?

4 个答案:

答案 0 :(得分:26)

  

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

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

在Python 2中(可能更早)你可以使用:

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

答案 1 :(得分:8)

在Python 2.x中,除法与C语言类似:如果两个参数都是整数,则结果被截断为整数,因此29/1009为0.0,因为float为0.0。为了解决这个问题,请在分割前投射到浮动:

print str(float(numerator)/denominator)

在Python 3.x中,除法行为更自然,因此您将获得正确的数学结果(在浮点错误内)。

答案 2 :(得分:1)

在您的评估中,您正在投射结果,您需要转换操作数。

答案 3 :(得分:0)

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