ここでは「float(浮動小数点数)」をテーマに、
🔹基礎(初級)/🔹中級(実践)/🔹上級(応用)の3レベルで、
それぞれ5問ずつ(合計15問)+すべて解答と丁寧な解説付きでまとめます。
基礎レベル(floatの基本動作)
問1:型の確認
次のコードを実行したとき、出力はどうなるでしょう?
a = 10
b = 3.0
print(type(a + b))
Python解答:
<class 'float'>
解説:int + float は自動的に float 型に変換されます。
→ 10 + 3.0 = 13.0(結果が小数点付き)
問2:割り算と切り捨て除算
次の出力をそれぞれ答えてください。
print(7 / 2)
print(7 // 2)
Python解答:
3.5
3
解説:/ は通常の割り算で 小数を返す。// は「切り捨て除算(floor division)」で 小数点以下を切り捨て。
問3:小数を含む計算
次の式を計算して結果を答えましょう。
result = 5 * 0.5 + 1
print(result)
Python解答:
3.5
解説:5 * 0.5 = 2.5 に +1 で合計 3.5。
float の基本演算です。
問4:float への型変換
次のコードの出力を答えてください。
a = 8
print(float(a))
Python解答:
8.0
解説:float() 関数で整数 8 を小数に変換します。
問5:四捨五入
次のコードの出力を答えてください。
x = 3.14159
print(round(x, 2))
Python解答:
3.14
解説:round(x, 2) は「小数第2位で四捨五入」。
※第1引数:値、第2引数:小数点以下の桁数。
中級レベル(floatの性質と注意点)
問6:丸め誤差の確認
次の出力を予想してください。
print(0.1 + 0.2)
Python解答:
0.30000000000000004
解説:
0.1や0.2は2進数で正確に表せないため、
内部的にわずかな誤差が出ます。
→ 0.3 ではなく 0.30000000000000004 になる。
問7:比較の落とし穴
次のコードの出力を答えてください。
print(0.1 + 0.2 == 0.3)
Python解答:
False
解説:
上と同じく、誤差があるため「完全一致ではない」。
→ 比較には math.isclose() を使うのが安全。
問8:math.isclose の使い方
次のコードの出力を答えてください。
import math
print(math.isclose(0.1 + 0.2, 0.3))
Python解答:
True
解説:isclose() は誤差を許容して比較します。
実務では「floatを比較する場合の基本テクニック」です。
問9:int()とfloat()の変換結果
次の出力を答えてください。
print(int(3.9))
print(float(3))
Python解答:
3
3.0
解説:
int(3.9)は小数点以下を切り捨てfloat(3)は整数を小数に変換
問10:四捨五入と表示フォーマット
次の出力を答えてください。
x = 2.34567
print(f"{x:.2f}")
print(format(x, ".3f"))
Python解答:
2.35
2.346
解説:
- f文字列では
.2fで小数点以下2桁 format(x, ".3f")は3桁で四捨五入表示
上級レベル(floatの応用と実務対応)
問11:通貨計算の問題点
次の出力を答えてください。
total = 0.1 + 0.1 + 0.1
print(total)
Python解答:
0.30000000000000004
解説:
float は正確に0.1を表せないため、
合計が誤差を含みます。通貨計算では致命的なので、decimal.Decimal を使うのが安全。
問12:decimal.Decimal の使い方
次のコードを実行したときの出力を答えてください。
from decimal import Decimal
a = Decimal("0.1")
b = Decimal("0.2")
print(a + b == Decimal("0.3"))
Python解答:
True
解説:Decimal は誤差なく正確に計算できます。
※文字列 "0.1" で指定するのがポイント。
問13:切り捨て除算の応用
次のコードの出力を答えてください。
print(7.5 // 2)
print(7.5 // 2.0)
Python解答:
3.0
3.0
解説:// は常に「切り捨て」計算。
float で計算しても結果は float で返る。
問14:math.floor / math.ceil の違い
次の出力を答えてください。
import math
print(math.floor(3.9))
print(math.ceil(3.1))
Python解答:
3
4
解説:
math.floor(x)→ 小さい方の整数(切り捨て)math.ceil(x)→ 大きい方の整数(切り上げ)
問15:丸め+比較の実践問題
次のコードの結果を予想してください。
import math
x = 0.1 * 3
print(x)
print(round(x, 2))
print(math.isclose(x, 0.3))
Python解答:
0.30000000000000004
0.3
True
解説:
- 内部的に誤差が出て
0.30000000000000004 round()で見た目を丸められるmath.isclose()なら安全に比較できる
総まとめ
| 内容 | 覚えておくポイント |
|---|---|
float | 小数点を扱う数 |
/ と // | / → 小数、// → 切り捨て |
| 誤差 | 0.1や0.2は誤差が出る |
| 比較 | math.isclose() を使う |
| 金額など | decimal.Decimal を使う |
| 表示 | round() や f"{x:.2f}" |
