pythonでの端数処理の方法まとめ。
たびすけ
競プロでも端数処理は頻出なのできちんと覚えましょう
説明の前提
- \(N=\)割られる数
- \(M=\)割られる数
切り捨て
//演算子
使う場面
- \(整数 \div 整数\)の計算結果を切り捨てる時
整数と整数の割り算の結果を整数で取得したいときには//
演算子を使いましょう。
注意点として\(M\)または\(N\)が非整数の場合、計算結果が整数であっても少数点以下が出力されます。
整数//整数
print(5 // 2)
2
非整数//整数
print(5.332 // 2)
2.0
たびすけ
整数\(\div\)整数の計算結果を切り捨てる場合には
//
演算子が一番です!int()
使う場面
- 非整数を切り捨てて整数に変換する時
- 計算結果を切り捨てて整数に変換する時
変数を切り捨て
M = 5.332
N = 2
print(M)
print(int(M))
5.332
5
計算結果を切り捨て
M = 5.332
N = 2
print(M / N)
print(int(M / N))
2.666
2
math.floor()
使う場面
- 非整数を切り捨てて整数に変換する時
- 計算結果を切り捨てて整数に変換する時
変数を切り捨て
import math
M = 5.332
N = 2
print(M)
print(math.floor(M))
5.332
5
計算結果を切り捨て
import math
M = 5.332
N = 2
print(M / N)
print(math.floor(M / N))
2.666
2
たびすけ
私は、整数\(\div\)整数の計算結果を切り捨てる時は
非整数を切り捨てて整数に変換する時は
//
演算子非整数を切り捨てて整数に変換する時は
int()
を使っています!math.floor()
はほとんど使っていません。切り上げ
式を工夫
使う場面
- \(整数 \div 整数\)の計算結果を切り上げる時
\((M+N-1)\)//\(N\)と計算すると計算結果が切り上げられます。
注意点として//
演算子を使うので\(M\)または\(N\)が非整数の場合、計算結果が整数であっても少数点以下が出力されます。
整数//整数
M = 5
N = 2
print((M + N - 1) // N)
3
非整数//整数
M = 5.332
N = 2
print((M + N - 1) // N)
3.0
たびすけ
なれると\((M+N-1)\)//\(N\)はコーディングが簡単です!
math.ceil()
使う場面
- 非整数を切り上げて整数に変換する時
- 計算結果を切り上げて整数に変換する時
変数を切り上げ
import math
M = 5.332
N = 2
print(M)
print(math.ceil(M))
5.332
6
計算結果を切り上げ
import math
M = 5.332
N = 2
print(M / N)
print(math.ceil(M / N))
2.666
3
端数処理まとめ
端数処理の方法を確認しましたが、まとめると次のようになります。
私の使い分け
- \(M \div N\)の計算結果の端数処理は
//
演算子 - 変数を切り捨てて整数に変換する
int()
- それ以外
math
ライブラリ(ほとんど使ったことがない)
たびすけ
競プロで端数処理は頻出なので迷わずに使えるようにしましょう!
私は
私は
math.ceil()
とmath.floor()
で迷うのと、コーディング楽なので//
演算子を使うケースが多いです。