我想在Python中打印一个double。但它不起作用,我不知道为什么。
我的代码:
test = 3000 / (1500 * 2000)
print str(test)
即使我执行以下操作,我也总是得到0
而不是0.001
:
test = 3000 / (1500 * 2000)
print '%.10f' % test
我得到0.000000000
而不是0.001
。
如何告诉Python这应该是双倍的?
答案 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。