分割中に問題に直面しています
my max_sum = 14
total_no=4
だから私がするとき
print "x :", (total_sum/total_no)
、3.5ではなく3を取得します
印刷の方法をたくさん試しましたが失敗しました。3.5形式でどのように印刷できるか誰かに教えてもらえますか?
ありがとうございました
分割中に問題に直面しています
my max_sum = 14
total_no=4
だから私がするとき
print "x :", (total_sum/total_no)
、3.5ではなく3を取得します
印刷の方法をたくさん試しましたが失敗しました。3.5形式でどのように印刷できるか誰かに教えてもらえますか?
ありがとうございました
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への移行の準備に使用することをお勧めします。
//
演算子は常に整数除算を意味することに注意してください。この動作が本当に必要な場合は、よりも優先して使用する必要があります/
。「暗黙的よりも明示的の方が優れている」ことを忘れないでください。
Python 2では、2つの整数を除算すると、結果も整数になります。max_sum = 14.0
またはのように、オペランドの1つをfloatにtotal_no = 4.0
して、floatの結果を取得してみてください。
Python 2.Xがもう少し直感的に動作するようにしたい場合は、追加できます
from __future__ import division
スクリプトの上部にあります。Python 3では、除算は期待どおりに機能します。
max_sum=14.0またはtotal_no=4.0にします
整数演算を実行しているため、最も近い整数の結果が得られます:3。
明示的/暗黙的にキャストmax_sum
するかtotal
、フロートする必要があります。
これを行う別の方法は、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