强制Python计算为double

时间:2013-05-04 10:57:10

标签: python

我想在Python中打印一个double。但它不起作用,我不知道为什么。

我的代码:

test = 3000 / (1500 * 2000)
print str(test)

即使我执行以下操作,我也总是得到0而不是0.001

test = 3000 / (1500 * 2000)
print '%.10f' % test

我得到0.000000000而不是0.001

如何告诉Python这应该是双倍的?

3 个答案:

答案 0 :(得分:5)

在Python 2.x中,您需要将至少一个操作数转换为float,因为整数除法会导致Python 2.x中的截断输出:

>>> 3000 / (1500 * 2000)
0
>>> 3000.0 / (1500 * 2000) # Or use float(3000)
0.001
>>> float(3000) / (1500 * 2000)
0.001

或者你可以在Python 2.x中导入Python 3.x的分区,其中整数除法产生 true 分区:

>>> from __future__ import division
>>> 3000.0 / (1500 * 2000)
0.001

请注意,这会影响整个模块的划分。

答案 1 :(得分:3)

那是因为你只在数学运算中使用了整数值。因此,结果将是(截断的)整数。如果你想要一个float结果,至少需要一个float操作数。

答案 2 :(得分:0)

在Python 3.x中修复了此行为。正如其他答案中所指出的,修复方法是将可分数转换为float

如果你想让/像在Python 3.x中一样工作,那么你可以这样做:from __future__ import division,然后你需要使用//运算符来实现旧的行为。您可以查看Python文档以获取有关operators

的信息