1

Pythonでdoubleを印刷したい。しかし、それは機能しません。理由はわかりません。

私のコード:

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

次のことをしても、私は常に a を取得し、 aを取得し0ません。0.001

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

私は を取得し、 を取得し0.000000000ません0.001

これが double であることを Python に伝えるにはどうすればよいですか?

4

3 に答える 3

5

Python 2.x では、少なくとも 1 つのオペランドを 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 3.x の除算を Python 2.x にインポートすることもできます。この場合、整数除算は真の除算になります。

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

これは、モジュール全体の分割に影響することに注意してください。

于 2013-05-04T10:57:40.467 に答える
0

この動作は Python 3.x で修正されています。他の回答で指摘されているように、修正は割り切れる数を にキャストすることfloatです。

Python 3.xのように動作させたい場合は、次の/ようにすることができます。その後、演算子をfrom __future__ import division使用して古い動作を実現する必要があります。演算子//については、Python のドキュメントを参照してください。

于 2013-05-04T11:51:05.610 に答える