Pythonで計算処理を行っていると、割り算の結果が予想と異なり戸惑うことがあります。
例えば、「10割る2」を計算したときに、整数の「5」ではなく小数の「5.0」が返ってきてしまい、型エラーの原因になるケースです。
しかし、適切な演算子や関数を知っていれば、整数のみを取得したり、切り上げや四捨五入を行ったりすることは非常に簡単です。
この記事では、Pythonで割り算の結果を整数で取得するための基本的な方法から、商と余りの同時取得、負の数を扱う際の注意点まで、最新環境に合わせて徹底的に解説します。
![]() 執筆者:マヒロ |
|
Pythonにおける2種類の割り算演算子
Pythonには割り算を行うために、スラッシュ1つの「/」と、スラッシュ2つの「//」という異なる演算子が用意されています。
これらを使い分けることが、整数を取得するための第一歩です。
通常の割り算「/」は常にfloat型(小数)を返す
Python 3以降の仕様では、通常の割り算演算子「/」を使うと、割り切れる計算であっても結果は必ず浮動小数点数(float型)になります。
# 通常の割り算
result_1 = 10 / 2
result_2 = 10 / 3
print(f"10 / 2 の結果: {result_1} (型: {type(result_1)})")
print(f"10 / 3 の結果: {result_2} (型: {type(result_2)})")
実行結果は以下の通りです。
10 / 2 の結果: 5.0 (型: <class 'float'>)
10 / 3 の結果: 3.3333333333333335 (型: <class 'float'>)
このように、答えが割り切れる「5」であっても、Pythonは「5.0」という小数の形式で結果を返します。
リストのインデックス操作などで整数が必要な場合、このままではエラーになってしまいます。
切り捨て除算「//」で整数(int型)を取得する
割り算の結果を整数で得たい場合に最も推奨されるのが、切り捨て除算演算子「//」です。
これを使えば、小数点以下を切り捨てた整数部分(商)のみを取得でき、結果の型も整数(int型)となります。
# 切り捨て除算
result_int_1 = 10 // 2
result_int_2 = 10 // 3
print(f"10 // 2 の結果: {result_int_1} (型: {type(result_int_1)})")
print(f"10 // 3 の結果: {result_int_2} (型: {type(result_int_2)})")
実行結果は以下の通りです。
10 // 2 の結果: 5 (型: <class 'int'>)
10 // 3 の結果: 3 (型: <class 'int'>)
この「//」演算子を使う方法が、Pythonで整数の商を求める最も基本的かつ高速な手段です。
単に整数部分だけが欲しい場合は、後述するint()関数での変換よりもこちらを使うと良いでしょう。
割り算の「商」と「余り」を計算する方法
整数同士の割り算では、商(割り算の答えの整数部分)だけでなく、「余り」を知りたい場面も多々あります。
Pythonでは余りを求めるための専用の演算子や、商と余りを一度に計算する便利な関数が用意されています。
「%」演算子で余り(剰余)を求める
余りを求めたい場合は、パーセント記号「%」を使用します。
これはモジュロ演算子とも呼ばれます。
num_a = 10
num_b = 3
# 商を求める
quotient = num_a // num_b
# 余りを求める
remainder = num_a % num_b
print(f"{num_a} ÷ {num_b} = {quotient} あまり {remainder}")
実行結果は以下の通りです。
10 ÷ 3 = 3 あまり 1
偶数か奇数かを判定する際(2で割った余りが0か1か)や、一定の周期で処理を繰り返す際などに頻繁に使用されます。
divmod関数で商と余りをまとめて取得
商と余りの両方が必要な場合、それぞれ計算するよりも「divmod()」という組み込み関数を使うのが効率的です。
この関数は、(商, 余り) というタプルを返します。
num_a = 14
num_b = 4
# divmod関数を使用
result = divmod(num_a, num_b)
print(f"戻り値: {result}")
print(f"商: {result[0]}, 余り: {result[1]}")
# アンパック代入を使うと便利です
q, r = divmod(num_a, num_b)
print(f"商(q): {q}, 余り(r): {r}")
実行結果は以下の通りです。
戻り値: (3, 2)
商: 3, 余り: 2
商(q): 3, 余り(r): 2
計算処理が一度で済むため、コードもすっきりと読みやすくなります。
秒数を「分と秒」に変換するような処理には最適です。
整数への丸め処理(切り捨て・切り上げ・四捨五入)
「//」演算子は結果を「切り捨て(床関数)」て整数にしますが、状況によっては「切り上げ」や「四捨五入」をして整数にしたいこともあります。
その場合は標準ライブラリなどを活用します。
int()関数による切り捨て(0方向への丸め)
通常の割り算「/」の結果を int() 関数でキャスト(型変換)することでも整数化できます。
正の数の場合は「//」と同じ結果になりますが、単に小数点以下を削除する挙動となります。
val = 10 / 3
int_val = int(val)
print(f"元の値: {val}")
print(f"int()変換後: {int_val}")
実行結果は以下の通りです。
元の値: 3.3333333333333335
int()変換後: 3
math.ceil()関数による切り上げ
割り算の結果を整数に切り上げたい場合(例:5.1なら6にする)は、math モジュールの ceil() 関数を使用します。
ページネーションのページ数計算などで必須のテクニックです。
import math
# 10 ÷ 3 = 3.33... -> 4 に切り上げたい
val_1 = 10 / 3
ceil_val_1 = math.ceil(val_1)
# 10 ÷ 2 = 5.0 -> 5 のまま
val_2 = 10 / 2
ceil_val_2 = math.ceil(val_2)
print(f"10/3 の切り上げ: {ceil_val_1}")
print(f"10/2 の切り上げ: {ceil_val_2}")
実行結果は以下の通りです。
10/3 の切り上げ: 4
10/2 の切り上げ: 5
round()関数による四捨五入
四捨五入して整数にしたい場合は、組み込み関数の round() を使います。
ただし、Pythonの round() は「偶数への丸め(銀行家の丸め)」と呼ばれる方式を採用しているため、0.5の処理に注意が必要です。
# 通常の四捨五入のように見える例
print(f"3.4 -> {round(3.4)}")
print(f"3.6 -> {round(3.6)}")
# 注意が必要な .5 のケース
# 偶数側に丸められるため、0.5は0に、1.5は2になります
print(f"0.5 -> {round(0.5)}")
print(f"1.5 -> {round(1.5)}")
print(f"2.5 -> {round(2.5)}")
実行結果は以下の通りです。
3.4 -> 3
3.6 -> 4
0.5 -> 0
1.5 -> 2
2.5 -> 2
厳密な四捨五入が必要な場合は、decimal モジュールを使用することをおすすめします。
負の数(マイナス)の割り算における注意点
Pythonで負の数を割り算する場合、「//」演算子と int() 関数では結果が異なることがあります。
これは「切り捨て」の定義が異なるために起こる現象です。
「//」と「int()」の違い
- // 演算子: 「負の無限大」に向かって切り捨てます(より小さい整数になる)。
- int() 関数: 「0」に向かって切り捨てます(単に小数点以下を削除)。
num = -10
div = 3
# -10 / 3 は -3.333...
# // 演算子の場合
# -3.333... より小さい最大の整数は -4
floor_div = num // div
# int() キャストの場合
# -3.333... の小数点以下を削除して -3
int_cast = int(num / div)
print(f"// 演算子: {floor_div}")
print(f"int()変換: {int_cast}")
実行結果は以下の通りです。
// 演算子: -4
int()変換: -3
数学的な「ガウス記号」や床関数の挙動としては // が正しいですが、C言語などの挙動(0方向への切り捨て)を期待している場合は int() を使う必要があります。
用途に応じて使い分けましょう。
Pythonのスキルを活かして年収を上げる方法
以上、Pythonで割り算の結果を整数にする方法について解説してきました。
なお、Pythonのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。
Pythonエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなPythonの案件を探しやすくなります。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。



