Python | レベル別練習問題:float(浮動小数点数)

Python
スポンサーリンク

ここでは「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}"

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました