少ない学びをせめて記録する

技術記録、競プロメモ、その他調べたことを書く @京都, twitter : @nehan_der_thal

pythonで切り上げたい

pythonで切り上げはmath.ceilなど使えば簡単ですが、mathを使わずに//演算子で上手くやりたくなって、ちょっと迷う機会がよくあります。(?) なのでメモします。

端数処理はmath.ceil : 切り上げ math.floor : 切り下げ round : 四捨五入の三通りをよく使います。 math.floorと//演算子の中身がよくわかってないのですが、同じものと捉えています。違いがあるのなら誰か教えてください... 今回やりたいことは//演算子で切り上げを実現したいという話です。以下のようなものを考えました。 a//b+(a%b>1), (2a+1)//(2b) + 1, -(-a//b) それぞれうまく機能するはずです。

おまけとして、14%7を0でなく7にしたい場合がありますがこれはa-(-a%b)で実現できます。以下実例です。

>>> -(-14//7)
2
>>> -(-13//7)
2
>>> 7-(-1%7)
1
>>> 7-(-14%7)
7