メインコンテンツへスキップ
Lesson2 / 9

数値型 - 整数と小数

目次

このレッスンで学ぶこと

  • Pythonの数値型(整数と小数)の違い
  • 数値を使った基本的な計算
  • 数値型の便利なメソッドと関数
  • よくある計算エラーとその対処法

数値型とは

数値型は、数を扱うためのデータ型です。

プログラミングでは、年齢、価格、温度、距離、点数など、あらゆる数値データを扱います。Pythonでは、数値を大きく分けて2つの型で表現します。

Pythonの2つの数値型

Pythonには主に2種類の数値型があります:

名前説明
int整数型小数点のない整数1, 10, -5, 0
float浮動小数点型小数点を含む数値3.14, 0.5, -2.5
Python
# 整数型(int)
age = 25
count = 100
temperature = -5

# 浮動小数点型(float)
pi = 3.14
price = 1980.0
rate = 0.5

💡 豆知識: 「float」は「浮動小数点数(Floating Point Number)」の略で、小数点の位置が「浮いて動く」ように表現できることから名付けられました。


なぜ数値型を理解する必要があるのか?

数値型を正しく理解することで、プログラムでの計算を正確かつ効率的に行えます。

数値型を使う場面

  • お金の計算: 商品の合計金額、消費税の計算
  • 点数の集計: テストの平均点、合計点の計算
  • 測定値の処理: 距離、重さ、温度などのデータ
  • 統計処理: データの分析、グラフの作成

整数型と浮動小数点型を使い分ける理由

Python
# ❌ 人数に小数を使うのは不自然
students = 25.5  # 学生が25.5人?

# ✅ 人数には整数を使う
students = 25

# ✅ 平均点には小数を使う
average = 85.5

適切な数値型を選ぶことで:

  1. 正確性: 計算結果が期待通りになる
  2. 効率性: メモリの使用量が最適化される
  3. 可読性: コードが理解しやすくなる

整数型(int)

整数型の基本

整数は小数点のない数値です。

Python
age = 25
score = 100
temperature = -5

print(age)          # 25
print(score)        # 100
print(temperature)  # -5

整数の計算

Python
a = 10
b = 3

print(a + b)  # 13  足し算
print(a - b)  # 7   引き算
print(a * b)  # 30  掛け算
print(a / b)  # 3.3333... 割り算(結果は小数)
print(a // b) # 3   割り算の商(整数)
print(a % b)  # 1   割り算の余り
print(a ** b) # 1000 累乗(10の3乗)

ポイント:

  • / は通常の割り算(結果は小数)
  • // は割り算の商(小数点以下切り捨て)
  • % は割り算の余り

浮動小数点型(float)

小数の基本

小数点を含む数値です。

Python
pi = 3.14
temperature = 36.5
price = 1500.0

print(pi)          # 3.14
print(temperature) # 36.5
print(price)       # 1500.0

小数の計算

Python
a = 10.5
b = 2.5

print(a + b)  # 13.0
print(a - b)  # 8.0
print(a * b)  # 26.25
print(a / b)  # 4.2

具体例

例1: 消費税の計算

Python
price = 1000
tax_rate = 0.1

# 消費税額
tax = price * tax_rate

# 合計金額
total = price + tax

print(f"商品価格: {price}円")
print(f"消費税: {tax}円")
print(f"合計: {total}円")

実行結果:

商品価格: 1000円
消費税: 100.0円
合計: 1100.0円

例2: 平均点の計算

Python
math = 80
english = 75
science = 90

# 合計
total = math + english + science

# 平均
average = total / 3

print(f"合計: {total}点")
print(f"平均: {average}点")

実行結果:

合計: 245点
平均: 81.66666666666667点

例3: 割り算の商と余り

Python
# 17個のリンゴを5人で分ける
apples = 17
people = 5

# 1人あたりの個数(商)
per_person = apples // people

# 余りの個数
remainder = apples % people

print(f"1人あたり: {per_person}個")
print(f"余り: {remainder}個")

実行結果:

1人あたり: 3個
余り: 2個

例4: 累乗の計算

Python
# 2の10乗
result = 2 ** 10
print(result)  # 1024

# 3の3乗
cube = 3 ** 3
print(cube)  # 27

例5: 型の確認

Python
a = 10
b = 10.5

print(type(a))  # <class 'int'>
print(type(b))  # <class 'float'>

type() 関数で変数の型を確認できます。


例6: 整数と小数の混在計算

Python
a = 10    # 整数
b = 3.5   # 小数

result = a + b
print(result)       # 13.5
print(type(result)) # <class 'float'>

整数と小数を計算すると、結果は自動的に小数になります。


便利な関数

abs() - 絶対値

機能: 数値の絶対値(符号を取り除いた値)を返します。

Python
num = -10
positive = abs(num)
print(positive)  # 10

# 正の数はそのまま
print(abs(5))    # 5

# 小数も使える
print(abs(-3.14))  # 3.14

round() - 四捨五入

機能: 数値を指定した桁数に四捨五入します。

Python
num = 3.14159

print(round(num))      # 3(整数に丸める)
print(round(num, 2))   # 3.14(小数第2位まで)
print(round(num, 3))   # 3.142(小数第3位まで)

書き方: round(数値, 桁数)(桁数を省略すると整数に丸める)


max() / min() - 最大値・最小値

機能: 複数の数値から最大値・最小値を返します。

Python
numbers = [10, 5, 8, 15, 3]

print(max(numbers))  # 15
print(min(numbers))  # 3

# 直接値を渡すこともできる
print(max(10, 5, 8))  # 10
print(min(10, 5, 8))  # 5

使い分け:

  • リストの場合: max(list)
  • 個別の値: max(値1, 値2, 値3)

sum() - 合計

機能: リストや タプルの数値の合計を計算します。

Python
scores = [80, 75, 90, 85]
total = sum(scores)
print(total)  # 330

# 開始値を指定できる
total_with_bonus = sum(scores, 10)  # 合計に10を加算
print(total_with_bonus)  # 340

よくある間違い

間違い1: ゼロ除算

Python
result = 10 / 0  # ZeroDivisionError: division by zero

原因: 0で割ることはできません。

対策:

Python
a = 10
b = 0

if b != 0:
    result = a / b
    print(result)
else:
    print("0で割ることはできません")

間違い2: 小数の誤差

Python
result = 0.1 + 0.2
print(result)  # 0.30000000000000004

原因: コンピュータ内部で小数を2進数で扱うため、微小な誤差が生じます。

対策:

Python
result = 0.1 + 0.2
print(round(result, 2))  # 0.3

間違い3: 文字列と数値の混同

Python
num = "10"
result = num + 5  # TypeError: can only concatenate str (not "int") to str

原因: "10" は文字列なので、数値と計算できません。

対策:

Python
num = "10"
result = int(num) + 5  # 文字列を整数に変換
print(result)  # 15

間違い4: 割り算と商の混同

Python
# 普通の割り算
print(10 / 3)   # 3.3333...

# 商(整数部分のみ)
print(10 // 3)  # 3

用途に応じて /// を使い分けましょう。


間違い5: 累乗と掛け算の混同

Python
# 間違い: 2*3 は掛け算
print(2 * 3)   # 6

# 正しい: 2**3 は累乗(2の3乗)
print(2 ** 3)  # 8

練習問題

問題1(基礎)⭐☆☆

半径が5の円の面積を計算してください。円の面積は「半径 × 半径 × 3.14」で求めます。

💡 ヒント
  1. 半径を変数に保存
  2. 半径 × 半径 × 3.14 を計算
  3. 結果を表示
✅ 解答例
Python
radius = 5
pi = 3.14

area = radius * radius * pi
# または area = radius ** 2 * pi

print(f"半径{radius}の円の面積: {area}")

実行結果:

半径5の円の面積: 78.5

解説: 半径の2乗は radius * radius または radius ** 2 で表現できます。** は累乗を表す演算子です。


問題2(基礎)⭐☆☆

27個のクッキーを5人で分けます。1人あたり何個もらえて、何個余るか計算してください。

💡 ヒント
  • 商(1人あたり): // を使う
  • 余り: % を使う
✅ 解答例
Python
cookies = 27
people = 5

per_person = cookies // people  # 商
remainder = cookies % people    # 余り

print(f"1人あたり: {per_person}個")
print(f"余り: {remainder}個")

実行結果:

1人あたり: 5個
余り: 2個

解説: // は割り算の商(整数部分)、% は余りを返します。27 ÷ 5 = 5 余り 2 です。


問題3(応用)⭐⭐☆

3つのテストの点数を入力して、合計点、平均点、最高点、最低点を表示してください。

💡 ヒント
  • 合計: + で足し算
  • 平均: 合計 ÷ 3
  • 最高点: max() 関数
  • 最低点: min() 関数
✅ 解答例
Python
test1 = 85
test2 = 92
test3 = 78

# 合計
total = test1 + test2 + test3

# 平均
average = total / 3

# 最高点と最低点
highest = max(test1, test2, test3)
lowest = min(test1, test2, test3)

print(f"合計点: {total}点")
print(f"平均点: {round(average, 2)}点")
print(f"最高点: {highest}点")
print(f"最低点: {lowest}点")

実行結果:

合計点: 255点
平均点: 85.0点
最高点: 92点
最低点: 78点

解説: max()min() 関数を使うことで、複数の値から最大値・最小値を簡単に取得できます。平均点は round() で小数第2位まで表示しています。


まとめ

このレッスンでは、数値型と算術演算の基本を学びました。

  • Pythonの数値型には、整数の int と小数の float があります。
  • +, -, *, /, //, %, ** の演算子を用途に応じて使い分けられます。
  • // は商、% は余りを求める演算で、実務でも頻繁に使います。
  • abs(), round(), max(), min(), sum() などの関数で計算処理を効率化できます。
  • 0除算や小数誤差、型の違いによるエラーに注意して実装することが重要です。