この記事のポイント
Python math.floorの基本的な使い方から実践的な応用例まで、初心者にもわかりやすく解説します。
この記事を読むと、次のようなことが身に付きます。
- 数値を切り捨てて整数にする基本的な使い方がわかる
- 負の数を扱うときの注意点や仕組みを理解できる
- 価格計算や年代算出など、実務で使えるコード例を知る
この記事を通してmath.floorをマスターすれば、数値計算やデータの整理を正確に行えるプログラムが書けるようになります。
math.floorとは?
math.floor(床関数)は、指定した数値以下で最大の整数を返す関数です。
基本的には小数点以下を切り捨てる処理ですが、数直線をイメージするとわかりやすくなります。正の数の「3.7」なら、それ以下で最大の整数は「3」です。一方、負の数の「-1.5」の場合、それ以下(より小さい側)で最大の整数は「-2」となります。単に数字の末尾を削除するのではなく、より小さい値の方へ丸める点がポイントです。
使用する際は、Pythonに標準で組み込まれているmathモジュールをインポートしてから使います。
math.floorの特徴
- 数値の小数点以下を切り捨てて整数に変換する
- 負の数を扱うときは元の値より小さい整数になるため注意が必要である
- 使用する前にmathモジュールのインポート記述が必要である
- 計算結果は浮動小数点数ではなく整数型で返される
- 配列のインデックス算出や画面の座標計算などで活用できる
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
math.floor関数の基本的な使い方を解説します。この関数を使うには、まずmathモジュールをインポートしてからmath.floor関数を使用します。
import math
positive_num = 3.7
negative_num = -2.3
result1 = math.floor(positive_num)
result2 = math.floor(negative_num)
print(f"math.floor({positive_num}) = {result1}")
print(f"math.floor({negative_num}) = {result2}")
出力結果
math.floor(3.7) = 3
math.floor(-2.3) = -3
この例では、正の数と負の数それぞれに対して切り捨て処理を行っています。正の数3.7は3になり、負の数-2.3はより小さい整数の-3に変換されます。計算結果は整数型として返されるため、その後の処理で整数の値が必要な場合にそのまま利用できます。
実用例
ここでは、math.floorを使った実践的なサンプルコードを紹介します。それぞれの例では、実際の開発でよく使われる場面を想定し、math.floorがどのように活用できるかを紹介します。各コード例は動作確認済みで、そのまま実行することができます。
価格計算での切り下げ処理
商品価格の計算において、税込み価格を1円単位で切り下げる処理を実装します。
import math
def calculate_discounted_price(original_price, discount_rate):
discounted_amount = original_price * discount_rate
final_price = math.floor(original_price - discounted_amount)
return final_price
cat_food_price = 1280
dog_toy_price = 2450
discount = 0.15
cat_result = calculate_discounted_price(cat_food_price, discount)
dog_result = calculate_discounted_price(dog_toy_price, discount)
print(cat_result)
print(dog_result)
出力結果
1088
2082
この例では、割引後の価格に含まれる小数点以下の端数を切り捨てています。計算結果を整数にすることで、支払い金額としての整合性を保つことができます。単なる四捨五入ではなく、顧客への請求額などで確実に端数を切り捨てる必要がある場面で役立ちます。
リストのインデックス計算
リストの中央など、特定の位置にある要素を取得するためにインデックスを計算する処理です。
import math
def get_center_elements(animal_list):
length = len(animal_list)
center_index = math.floor(length / 2.5)
return animal_list[center_index], center_index
animals = ["ウサギ", "リス", "ハムスター", "モルモット", "フェレット"]
selected_animal, index = get_center_elements(animals)
print(f"選択された動物: {selected_animal}")
print(f"インデックス: {index}")
出力結果
選択された動物: ハムスター
インデックス: 2
この例では、リストの要素数をもとに計算した値を整数に変換し、インデックスとして利用しています。リストの要素を指定するインデックスは必ず整数である必要があるため、計算によって小数の値が出た場合でも、この関数を通すことでエラーにならず要素へアクセスできます。
時間計算での単位変換
秒数で表された時間を「何分何秒」という形式に変換し、分数の部分だけを整数で取得する処理です。
import math
def convert_seconds_to_minutes(seconds):
complete_minutes = math.floor(seconds / 60)
remaining_seconds = seconds % 60
return complete_minutes, remaining_seconds
rabbit_exercise_time = 185
hamster_exercise_time = 67
rabbit_min, rabbit_sec = convert_seconds_to_minutes(rabbit_exercise_time)
hamster_min, hamster_sec = convert_seconds_to_minutes(hamster_exercise_time)
print(f"ウサギの運動時間: {rabbit_min}分{rabbit_sec}秒")
print(f"ハムスターの運動時間: {hamster_min}分{hamster_sec}秒")
出力結果
ウサギの運動時間: 3分5秒
ハムスターの運動時間: 1分7秒
この例では、総秒数を60で割って分数を算出し、切り捨て処理で整数の「分」を求めています。余りの秒数と組み合わせることで、ユーザーが見やすい「◯分◯秒」という形式へ変換しています。タイマーや運動記録アプリなどで頻繁に使われる計算です。
年代の算出処理
年齢データから、その人が「何代」にあたるかを算出する処理です。
import math
def get_generation(age):
tens_place = math.floor(age / 10)
generation = tens_place * 10
return generation
user_age = 26
target_age = 53
print(f"{user_age}歳は、{get_generation(user_age)}代です")
print(f"{target_age}歳は、{get_generation(target_age)}代です")
出力結果
26歳は、20代です
53歳は、50代です
この例では、年齢を10で割った値の小数点以下をmath.floorで切り捨てることで、10の位の数字だけを取り出しています。それを再度10倍することで、「20」や「50」といった年代の値を算出しています。ユーザーの属性分析や、アンケート集計などで使用されるロジックです。
座標計算での位置調整
ゲームや描画処理において、キャラクターやオブジェクトの位置をマス目(グリッド)に合わせて整列させる処理です。
import math
def snap_to_grid(x, y, grid_size):
grid_x = math.floor(x / grid_size) * grid_size
grid_y = math.floor(y / grid_size) * grid_size
return grid_x, grid_y
penguin_x, penguin_y = 23.7, 18.2
seal_x, seal_y = 45.1, 33.9
grid_unit = 10
penguin_grid = snap_to_grid(penguin_x, penguin_y, grid_unit)
seal_grid = snap_to_grid(seal_x, seal_y, grid_unit)
print(f"ペンギンの位置: {penguin_grid}")
print(f"アザラシの位置: {seal_grid}")
出力結果
ペンギンの位置: (20, 10)
アザラシの位置: (40, 30)
この例では、中途半端な座標値をグリッドのサイズで割って切り捨てることで、もっとも近いマス目の基準点へ移動させています。こうすることで、ユーザーが置いたアイテムをきれいに整列させたり、キャラクターの移動をマス目単位に制限したりすることができます。
まとめ
math.floorは、数値を整数に変換する際の基本的な関数です。この記事では、基本構文から実際の活用例まで解説しました。
math.floorが活用できるような場面は次のようなケースです。
math.floorが活躍する場面
- 消費税計算などで端数を切り捨てて価格を確定させるとき
- リストの中央要素など、インデックス番号を計算するとき
- 秒数を分単位に直すなど、時間の単位変換を行うとき
math.floorを用いる上で、押さえておきたいポイントを覚えておきましょう。
重要なポイント
- 使用するにはmathモジュールのインポート記述が必要
- 負の数は元の値より小さい整数になるため注意する
- 計算結果は浮動小数点数ではなく整数型で返される
初めてPythonを学ぶ方も、この記事で紹介したコードを実際に書いて、動作を確認してみてください。
端数を扱う処理は、実際の開発現場でも頻繁に登場します。使い方を覚えておくと、きっと役立つはずです。
ぜひmath.floorを使いこなして、より正確な数値処理ができるプログラムを作成できるようになりましょう。
レベルを更に上げたい方はpaizaプログラミングスキルチェックへ