小数切り捨ての除算演算子「//」で切り上げができる!?【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
という結果が
えられることが理解できる.
スポンサーリンク