この単純な計算で 0 が返されるのはなぜですか
>>> 25/100*50
0
これは実際に正しく計算されますか?
>>> .25*50
12.5
>>> 10/2*2
10
最初の例のどこが間違っていますか?
この単純な計算で 0 が返されるのはなぜですか
>>> 25/100*50
0
これは実際に正しく計算されますか?
>>> .25*50
12.5
>>> 10/2*2
10
最初の例のどこが間違っていますか?
Python 2 では25/100
、整数除算を実行すると 0 になります。結果が 未満であるため1
。
スクリプトに追加することで、これを「修正」できfrom __future__ import division
ます。/
これは、演算子を使用//
し、整数除算に使用する場合、常に浮動小数点除算を実行します。
別のオプションは、オペランドの少なくとも 1 つを float にすること25.0/100
です。
Python 3 では、25/100
常に0.25
.
これは、整数の切り捨ての問題です(つまり、数値の小数部分は破棄されます)。そう:
25 / 100
与える0
ただし、除算のオペランドの少なくとも 1 つが float である限り、float の結果が得られます。
25 / 100.0
または25.0 / 100
または25.0 / 100.0
すべて与える0.25
25/100
は (切り捨てにより) に丸める整数計算0
です。
Python 2 は、結果が 1 未満の場合、整数除算に対してゼロを返します。
解決策は、整数の1つを浮動小数点数に変換することです。
float(25)/100*50