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