我有两个整数值a和b,但我需要它们在浮点数中的比值。我知道a < b,我想计算a / b,所以如果我用整数除法,我总是得到0,余数是a。

如何在以下Python 2中强制c为浮点数?

c = a / b

在3。X,行为是相反的;参见为什么整数除法产生一个浮点数而不是另一个整数?反之为3。x-specific问题。


当前回答

from operator import truediv

c = truediv(a, b)

其他回答

c = a / (b * 1.0)
from operator import truediv

c = truediv(a, b)

如果你想默认使用"true"(浮点)除法,有一个命令行标志:

python -Q new foo.py

这里有一些缺点(来自PEP):

有人认为,命令行选项可以更改 违约是邪恶的。如果做错了,肯定会很危险 手:举个例子,不可能组合第三个手 需要-Qnew的party库包与另一个 需要-Qold。

通过查看python手册页,您可以了解更多关于更改/警告除法行为的其他标志值。

有关除法更改的详细信息,请参阅:PEP 238—更改除法操作符

这个也可以

>>> u=1./5
>>> print u
0.2

你可以用c = a / float(b)来转换为float。如果分子或分母是浮点数,则结果为also。


警告:正如评论者指出的那样,如果b不是整数或浮点数(或表示浮点数的字符串),这将不起作用。如果你可能要处理其他类型(比如复数),你需要检查或者使用不同的方法。