为什么';这个划分在Python中不起作用吗?

为什么';这个划分在Python中不起作用吗?,python,numbers,Python,Numbers,考虑: >>> numerator = 29 >>> denom = 1009 >>> print str(float(numerator/denom)) 0.0 如何使其返回小数点 在第3版之前,Python的除法运算符/,在显示两个整数参数时表现得与C的除法运算符类似:它返回一个整数结果,当有小数部分时,该结果会被截断。见: 在Python 2中(可能更早),您可以使用: >>> from __future__ imp

考虑:

>>> numerator = 29
>>> denom = 1009
>>> print str(float(numerator/denom))
0.0
如何使其返回小数点

在第3版之前,Python的除法运算符/,在显示两个整数参数时表现得与C的除法运算符类似:它返回一个整数结果,当有小数部分时,该结果会被截断。见:

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

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

在Python2.x中,除法的工作方式与类似C语言中的工作方式类似:如果两个参数都是整数,则结果将被截断为整数,因此29/1009为0。0作为浮点数是0.0。要固定它,请在分割之前将其转换为浮点数:

print str(float(numerator)/denominator)

在Python3.x中,除法的作用更自然,因此您将得到正确的数学结果(在浮点误差范围内)。

在计算过程中,如果要强制转换结果,则需要强制转换操作数

有点旁白,但是
float
与Python标准库中的
Decimal
类型不同。当你说“我只想让它返回一个十进制数”时,你真正的意思是“我只想让它返回一个用十进制表示法表示一个小数值的字符串”,对吗?只要将任意一个操作数转换为float()。我通常建议铸造分子,因为它将铸造定位在表达式的开头,读者通常会更容易看到它。是的,但这对我来说似乎更“合适”,因为它铸造时更透明。但是,是的,单独铸造一个就足够了。Python中的-7//3=-3(余数为=2)和C/C++中的-7/3=-2(余数为-1),所以我不会说Python中的这种行为与C/C++@Artur中的行为是相同的,这是固定除法与标准除法、模与余数运算符之间的区别。Floor和mod朝负无穷大方向工作,标准除法和余数朝零方向工作。
print str(float(numerator)/denominator)
print str(float(numerator)/float(denom))