0

次のコードがあります。

x=4200/820

返されるはずですx=5.12が、返されますx=5。どうすればこれを変更できますか。ありがとう

編集:代わりにこのコードがある場合:

x=(z-min(z_levels))/(max(z_levels)-min(z_levels))

z, min(z_levels) and max(z_levels)リストから取得された for ループで変化する値はどこにありますか。どうすればxフロートを作ることができますか? 次のようにコードを変更する必要がありますか?

x=float(z-min(z_levels))/float(max(z_levels)-min(z_levels))
4

4 に答える 4

4

10 進数を使用して Python に浮動小数点数を使用させる

>>> x=4200/820.
>>> x
5.121951219512195

x を 5.12 に丸めたい場合は、次のround関数を使用できます。

>>> round(x, 2)
5.12
于 2013-04-28T21:50:36.350 に答える
2

少なくとも 1 つの変数/値を float にキャストする必要があります。 x=float(4200)/float(820)または、小数点を使用して、値が float ( x=4200/820.)であることを示します。

または、 を使用するfrom __future__ import divisionと、通常の int 除算で float が返されます。

In [1]: from __future__ import division

In [2]: 4200/820
Out[2]: 5.121951219512195

このインポート後に Python 2x スタイルの整数除算 (結果は丸められた整数) を実現するには、次の//演算子を使用する必要があります。

In [22]: 4200//820
Out[22]: 5
于 2013-04-28T21:50:37.047 に答える
2

python2.x ではinteger division常に出力が切り捨てられますが、オペランドの 1 つが変更されたfloat場合、出力も同様に変更されfloatます。

In [40]: 4200/820
Out[40]: 5

In [41]: 4200/820.0
Out[41]: 5.121951219512195

In [42]: 4200/float(820)
Out[42]: 5.121951219512195

これはpython 3.xで変更されました。///

In [43]: from __future__ import division #import py3x's division in py2x

In [44]: 4200/820
Out[44]: 5.121951219512195
于 2013-04-28T21:50:54.677 に答える
1

そのうちの 1 つは float である必要があります。

In [152]: 4200/820.
Out[152]: 5.121951219512195
于 2013-04-28T21:51:09.093 に答える