我想在 Python 中打印一个 double。但它不起作用,我不知道为什么。
我的代码:
test = 3000 / (1500 * 2000)
print str(test)
即使我执行以下操作,我总是得到 a0
而不是 a :0.001
test = 3000 / (1500 * 2000)
print '%.10f' % test
我得到一个0.000000000
而不是0.001
。
我如何告诉 Python 这应该是双精度的?
我想在 Python 中打印一个 double。但它不起作用,我不知道为什么。
我的代码:
test = 3000 / (1500 * 2000)
print str(test)
即使我执行以下操作,我总是得到 a0
而不是 a :0.001
test = 3000 / (1500 * 2000)
print '%.10f' % test
我得到一个0.000000000
而不是0.001
。
我如何告诉 Python 这应该是双精度的?
在 Python 2.x 中,您需要将至少一个操作数转换为浮点数,因为整数除法会导致 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 的除法,其中整数除法会产生真正的除法:
>>> from __future__ import division
>>> 3000.0 / (1500 * 2000)
0.001
注意,这会影响整个模块的划分。
那是因为您在数学运算中只使用了整数值。因此,结果将是一个(截断的)整数。如果您想要一个浮点结果,请至少包含一个浮点操作数。
此行为在 Python 3.x 中已修复。正如其他答案中所指出的,解决方法是将整除数转换为float
.
如果你想像/
Python 3.x 一样工作,那么你可以这样做:from __future__ import division
,然后你需要使用//
操作符来实现旧的行为。您可以查看 Python 文档以获取有关操作符的信息。