小数切り捨ての除算演算子「//」で切り上げができる!?【Python 3】

2020-03-29

Python 3 において,

>>> 3 // 2
1

となるのは自明だが,

>>> -(-3 // 2)
2

とすると,小数切り上げになるのはご存知だろうか.

//」演算子は,小数を切り捨てて整数値にする演算子だ.

しかしこの場合,結果を見ると切り上げになっている.

そもそも端数処理における小数点以下の切り捨ては,「負の無限大への丸め(rounding toward minus infinity)」

である.つまり,3/2 => 1.5 の小数部を減らしていったとき,最も近くなる

整数値が返されるわけだ.(参照:Roundingを理解する - Qiita

負数の場合,数を小さくしていくということは絶対値を大きくしていくという

ことになる.

よって,-3/2 => -1.5 の小数部切り捨て処理を行うと,-2という結果が

えられることが理解できる.

スポンサーリンク