Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@ikanamazu

【Python】切り捨て除算演算子を使った切り上げ【算数】

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

切り捨てて数字が大きくなるのは確かにおかしい。
ここまで動かして、負数の切り捨てが小さい方へ倒れるからだと理解。

こういう問題めっちゃ苦手なんですが、克服する方法ってないんでしょうかね...

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What are the problem?