パイソンラウンド問題
-
26-09-2019 - |
質問
除しながら、私は問題に直面しています。
my max_sum = 14
total_no=4
私が行うときに、
print "x :", (total_sum/total_no)
、私は3を取得していない3.5
私は印刷するための多くの方法を試みたが失敗し、缶誰かが私が私が3.5形式で何を得る方法を知ってみましょう?
ありがとうございます。
解決
でのPython 2.xでは、。これは、しばしば混乱さ、とPython 3.xで修正されました
:あなたは、自動的に他をキャストしますフロートに数字の1を鋳造することにより、それバイパスすることができます float( 14 ) / 4 == 3.5
関連PEPである数238 のます:
現在の除算(/)演算子有します 以下のためのあいまいな意味 数値引数:それは数学の床を返します。 引数がint型やlong型である場合には除算の結果が、それ もし除算結果の妥当な近似を返します 引数は浮動小数点数や複雑です。これは式が期待します フロートや複雑な結果エラーが発生しやすい整数ではありません 入力として期待されるが、可能ます。
これは、理由は深刻な後方互換性の問題のPythonの2.xのに変更しましたが、Pythonの3.xで大きな変化の一つであったいませんでしたあなたがオンラインで新しい部門を強制することができます。
from __future__ import division
あなたのPythonスクリプトの上部にあります。これは __future__
インポートである - それが力に使用されていますそうでない場合は、スクリプトを壊すかもしれない構文の変更。他の多くの__future__
の輸入があります。彼らは、Python 3.xのへの移行の準備のためにしばしば使用することをお勧めします。
分割整数//
オペレータは常に意味していると、あなたが本当にこの動作をしたい場合、あなたは/
に優先して、それを使用する必要があります。 「明示的、暗黙的よりも優れている」、覚えておいてください!
他のヒント
あなたは2つの整数を分割している、結果はあまりにも整数になり、Pythonでフロート結果を得るためにmax_sum = 14.0
またはtotal_no = 4.0
のようなあなたのオペランドの2トライメイク1フロート、ます。
あなたはそのことで、より直感的なビット振る舞いのpython 2.Xをしたい場合は、追加することができます。
from __future__ import division
あなたのスクリプトの先頭に。 python 3では、部門はあなたがあなたのケースでそれを期待通りに動作します。
メイクmax_sum = 14.0またはtotal_no = 4.0
あなたは最も近い整数の結果を得るようにするには、整数演算をやっている:3
あなたは明示的/暗黙的にfloat型にmax_sum
またはtotal
をキャストする必要があります。
これを実行する別の方法は、Python 3からの輸入部門になります:
>>> 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