2

分割中に問題に直面しています

my max_sum = 14
total_no=4  

だから私がするとき

print "x :", (total_sum/total_no)

、3.5ではなく3を取得します

印刷の方法をたくさん試しましたが失敗しました。3.5形式でどのように印刷できるか誰かに教えてもらえますか?

ありがとうございました

4

5 に答える 5

9

Python 2.xでは、デフォルトで2つの整数を除算すると、別の整数になります。これはしばしば混乱を招き、Python3.xで修正されました。数値の1つをfloatにキャストすると、それをバイパスできます。これにより、他の数値が自動的にキャストされます。

float( 14 ) / 4 == 3.5

関連するPEPは番号238です:

現在の除算(/)演算子は、数値引数に対してあいまいな意味を持っています。引数がintまたはlongの場合は除算の数学結果の下限を返しますが、引数がfloatまたは複素数の場合は除算結果の妥当な近似値を返します。 。これにより、整数が予期されていないが入力として可能である場合に、floatまたは複雑な結果を期待する式でエラーが発生しやすくなります。

重大な下位互換性の問題のため、Python 2.xでは変更されませんでしたが、Python3.xでの主要な変更の1つでした。あなたはラインで新しい分割を強制することができます

from __future__ import division

Pythonスクリプトの上部にあります。これは__future__-importです。これは、構文を強制的に変更するために使用されます。そうしないと、スクリプトが破損する可能性があります。他にも多くの__future__インポートがあります。多くの場合、Python3.xへの移行の準備に使用することをお勧めします。

//演算子は常に整数除算を意味することに注意してください。この動作が本当に必要な場合は、よりも優先して使用する必要があります/。「暗黙的よりも明示的の方が優れている」ことを忘れないでください。

于 2010-09-01T20:06:05.047 に答える
2

Python 2では、2つの整数を除算すると、結果も整数になります。max_sum = 14.0またはのように、オペランドの1つをfloatにtotal_no = 4.0して、floatの結果を取得してみてください。

Python 2.Xがもう少し直感的に動作するようにしたい場合は、追加できます

from __future__ import division

スクリプトの上部にあります。Python 3では、除算は期待どおりに機能します。

于 2010-09-01T20:06:16.493 に答える
1

max_sum=14.0またはtotal_no=4.0にします

于 2010-09-01T20:04:20.510 に答える
0

整数演算を実行しているため、最も近い整数の結果が得られます:3。

明示的/暗黙的にキャストmax_sumするかtotal、フロートする必要があります。

于 2010-09-01T20:06:28.850 に答える
0

これを行う別の方法は、Python3から除算をインポートすることです。

>>> from __future__ import division
>>> max_sum = 14
>>> total_no = 4
>>> print max_sum / total_no  # the way you want it
3.5
>>> print max_sum // total_no
3
于 2010-09-01T20:08:32.493 に答える