初心者向けに「float(浮動小数点数)」をやさしく噛み砕いて、実例と練習問題(解答付き)でしっかり解説します。コード例はすべて Python で動きます。
1) floatって何?簡単に説明
floatは「小数を扱う数」の型です。たとえば1.5、0.1、-3.14のような値。- 「小数点がある(または
.を付けた)数」はfloatとして扱われます。例:100.0はfloat、100はint(整数)です。
>>> type(1.5)
<class 'float'>
>>> type(100)
<class 'int'>
Python2) 基本的な演算ルール(例あり)
+,-,*,/は使えます。- 重要:
intとfloatを混ぜて計算すると結果はfloatになります。 /(通常の割り算)は常にfloatを返します(たとえ割り切れても1.0のように)。//(床(切り捨て)除算)は小数を切り捨てます。%は余り。
例:
>>> 10 + 3.5 # int + float -> float
13.5
>>> 6 / 3 # 割り算は float
2.0
>>> 7 // 2 # 切り捨て(整数除算)
3
>>> 7.0 // 2.0
3.0
>>> 7 % 2
1
Python3) 浮動小数点の「丸め誤差」について(超重要)
コンピュータは二進数で数を扱うため、有限のビット数で表現できない小数(たとえば 0.1)は近似値になります。そのため次のような結果になります:
>>> 0.1 + 0.2
0.30000000000000004
Python見た目と異なる小さな誤差が出ることがあるので、浮動小数点の比較は直接 == でやらないのが基本です。代わりに math.isclose() を使います。
import math
math.isclose(0.1 + 0.2, 0.3) # True
Python4) 型変換(int() と float())
float(x)でxを浮動小数点に変換します。int(x)は小数点以下を 切り捨て ます(丸めではありません)。
>>> float(3)
3.0
>>> int(3.9)
3
>>> int(-3.9)
-3 # 注意:intは単純に切り捨て。負の方向の丸めとは違う
Python補足:小数点以下を四捨五入したいときは
round()を使います(次節で説明)。
5) 表示方法(見た目を整える)
round(x, n):小数第n位に四捨五入。- f文字列や
format()で桁数を指定して表示できます。
>>> round(2.34567, 2)
2.35
>>> x = 2.34567
>>> f"{x:.2f}" # 小数点以下 2 桁で表示
'2.35'
>>> format(x, ".3f")
'2.346'
Python※ round() は内部的な丸めと表示の違いに注意(表示用に f"{x:.2f}" を多用すると安全)。
6) 比較するときの注意(== は危ない)
浮動小数点は誤差があるので、== での比較は避けます。代わりに math.isclose() を使うのが推奨です。
import math
a = 0.1 + 0.2
b = 0.3
a == b # False になることが多い
math.isclose(a, b) # True
Pythonmath.isclose() は許容誤差(相対誤差・絶対誤差)を指定できます。
7) よく使う標準ライブラリ(math)
math モジュールに数学関数がいろいろあります。例:
import math
math.sqrt(2) # 平方根
math.pow(2, 3) # 2**3
math.floor(2.9) # 2 (小さい方の整数)
math.ceil(2.1) # 3 (大きい方の整数)
math.isclose(0.1+0.2, 0.3)
math.pi # 円周率
Python8) 実務でのベストプラクティス(初心者向け)
- お金を扱う(通貨計算)→
floatは避ける(丸め誤差が致命的)。decimal.Decimalを使う。 - 表示だけ丸めたい →
f"{x:.2f}"やround()を使う。 - 比較は
math.isclose()を使う。 - 整数で良いなら
intを使う。floatを不用意に使うと誤差が混じる。
9) 実用的な例(コード付き)
- 小数の合計と表示:
prices = [19.99, 5.5, 3.45]
total = sum(prices)
print(total) # 28.94(でも内部で少し誤差があることも)
print(f"合計: {total:.2f} 円") # 表示は 2 桁で見やすく
Python- 切り捨て除算と余り:
a, b = 7, 2
print(a // b) # 3
print(a % b) # 1
Python- 小数同士の切り捨て:
print(7.5 // 2.0) # 3.0
Python- 浮動小数点の比較:
import math
a = 0.1 + 0.2
print(a == 0.3) # False
print(math.isclose(a, 0.3)) # True
Python10) 練習問題(解答&解説付き)
初心者向けに段階をつけた 5 問。まずは自力で解いてから答えを見てください。
問題1(基礎)
変数 a = 5(int)と b = 2.0(float)の和を計算して、結果の型を表示してください。
期待される出力:値と type がわかれば OK。
解答例
a = 5
b = 2.0
c = a + b
print(c, type(c)) # 7.0 <class 'float'>
Python解説:int + float は float になります。
問題2(割り算)
7 / 2 と 7 // 2 の違いを実際に出力して確認してください。
解答例
print(7 / 2) # 3.5
print(7 // 2) # 3
Python解説:/ は浮動小数点の割り算、// は切り捨て。
問題3(丸め誤差)
次のコードを実行して出力を確認してください。なぜ False になるのか説明してください。
print(0.1 + 0.2 == 0.3)
Python解答
# 出力は False
# 理由: 0.1, 0.2, 0.3 は二進数で正確に表せないため、内部に小さな誤差があるから。
補足:比較するなら math.isclose(0.1+0.2, 0.3) を使う。
問題4(四捨五入と表示)
変数 x = 2.6789 を小数点以下 2 桁で表示するコードを書いてください(2.68 と表示)。
解答例
x = 2.6789
print(round(x, 2)) # 2.68
print(f"{x:.2f}") # '2.68'(文字列)
Python問題5(実務的注意)
「商品の合計金額の計算(複数商品の小数)」に float を使う問題点を 1 つ書いてください。
模範解答:丸め誤差により合計が正確にならず、特に通貨計算では金額がずれる可能性があるため decimal.Decimal を使うべき。
11) 参考:decimal を使うとどうなるか(短い紹介)
お金など正確さが必要なら decimal.Decimal を使います。
from decimal import Decimal
a = Decimal("0.1")
b = Decimal("0.2")
print(a + b == Decimal("0.3")) # True
PythonDecimal("0.1") のように文字列で渡すのがポイント(Decimal(0.1) は float の誤差を引き継ぐため避ける)。
まとめ
floatは便利だが「丸め誤差」がある点に注意。- 表示は
f"{x:.2f}"、比較はmath.isclose()、通貨はdecimal.Decimal。 - 基本操作(
+ - * / // %)はすぐ使えるので、まずコードを書いて動かしてみるのが上達の近道!

