1

我想在 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 这应该是双精度的?

4

3 回答 3

5

在 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

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

于 2013-05-04T10:57:40.467 回答
4

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

于 2013-05-04T10:59:05.473 回答
0

此行为在 Python 3.x 中已修复。正如其他答案中所指出的,解决方法是将整除数转换为float.

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

于 2013-05-04T11:51:05.610 回答