pythonで切り上げはいつも次のようにmathをimportして求めていた。
import math
n = 2 / 3 # 0.6666666666666666
math.ceil(n) # 1
次のような書き方もできるが何しているのか良く分からなかったのでメモ。
x, y = 2, 3
-(-x // y) # 1
//が割り算の整数部分を返す演算子という事は分かる。
でもマイナスつけたら何で切り上げになるんだ。
細かく実行してみた。
x, y = 2, 3
# 1. 普通の割り算
x / y # 0.6666666666666666
# 2. 1の小数部分を切り捨て
x // y # 0
# 3. 1の負数版
-x / y # -0.6666666666666666
# 4. 3を切り捨てて-1側になる
-x // y # -1
# 5. 4の符号を反転させると切上げの結果と等しくなる
-(-x // y) # 1
切り捨てて数字が大きくなるのは確かにおかしい。
ここまで動かして、負数の切り捨てが小さい方へ倒れるからだと理解。
こういう問題めっちゃ苦手なんですが、克服する方法ってないんでしょうかね...