なぜこれが実際に正しく計算しながら、この単純な計算の戻り0なぜ簡単な除算計算のためにPythonは0を返しますか?
>>> 25/100*50
0
していますか?
>>> .25*50
12.5
>>> 10/2*2
10
最初の例で何が問題になっていますか?
なぜこれが実際に正しく計算しながら、この単純な計算の戻り0なぜ簡単な除算計算のためにPythonは0を返しますか?
>>> 25/100*50
0
していますか?
>>> .25*50
12.5
>>> 10/2*2
10
最初の例で何が問題になっていますか?
整数除算を実行すると、Python 2では25/100
がゼロになります。結果は1
より小さいためです。
from __future__ import division
をスクリプトに追加することでこれを修正することができます。 /
演算子を使用する場合は常に浮動小数点除算を実行し、整数除算の場合は//
を使用します。
もう1つのオプションは、オペランドの少なくとも1つを浮動小数点にすることです。 25.0/100
。
Python 3では、25/100
は常に0.25
です。
25/100
は、0
に丸め(切り捨て)する整数演算です。
これは、整数の切り捨て(つまり、数値の小数部分は破棄されます)の問題です。だから、:
25/100.0
または25.0/100
または25.0/100.0
:
25/100
は限りフロートがある部門のオペランドの少なくとも1として、しかし0
与え、あなたはフロート結果を得るでしょうすべて与えます0.25
些細なニックピッキング、それはあまり切り捨てとして丸めていません。 – Levon
@ Levonこれは四捨五入の形ですが、そうです。 – Marcin