56

この単純な計算で 0 が返されるのはなぜですか

>>> 25/100*50  
0

これは実際に正しく計算されますか?

>>> .25*50
12.5

>>> 10/2*2  
10

最初の例のどこが間違っていますか?

4

6 に答える 6

93

Python 2 では25/100、整数除算を実行すると 0 になります。結果が 未満であるため1

スクリプトに追加することで、これを「修正」できfrom __future__ import divisionます。/これは、演算子を使用//し、整数除算に使用する場合、常に浮動小数点除算を実行します。

別のオプションは、オペランドの少なくとも 1 つを float にすること25.0/100です。

Python 3 では、25/100常に0.25.

于 2012-05-26T18:25:49.410 に答える
19

これは、整数の切り捨ての問題です(つまり、数値の小数部分は破棄されます)。そう:

25 / 100与える0

ただし、除算のオペランドの少なくとも 1 つが float である限り、float の結果が得られます。

 25 / 100.0または25.0 / 100  または25.0 / 100.0すべて与える0.25

于 2012-05-26T18:26:17.557 に答える
1

25/100は (切り捨てにより) に丸める整数計算0です。

于 2012-05-26T18:26:02.763 に答える
0

Python 2 は、結果が 1 未満の場合、整数除算に対してゼロを返します。

解決策は、整数の1つを浮動小数点数に変換することです。

float(25)/100*50
于 2020-10-15T21:00:39.060 に答える