26
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

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

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

26
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?