强制Python计算为double

Force Python calculation in double

本问题已经有最佳答案,请猛点这里访问。

我想用Python打印一张双人床。但它不起作用,我也不知道为什么。

我的代码:

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

我总是得到一个0,而不是一个0.001,即使我这样做:

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

我得到一个0.000000000而不是0.001

我该如何告诉python这应该是一个双精度呢?


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

1
2
3
4
5
6
>>> 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的除法,其中整数除法产生真正的除法:

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

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


这是因为在数学运算中只使用整数值。因此,结果将是一个(截断的)整数。如果需要浮点结果,请至少涉及一个浮点操作数。


这种行为在python 3.x中是固定的。正如其他答案中指出的,固定的方法是将可除数强制转换为float

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