Python | 整数と実数(float型)

Python
スポンサーリンク

初心者向けに「float(浮動小数点数)」をやさしく噛み砕いて、実例と練習問題(解答付き)でしっかり解説します。コード例はすべて Python で動きます。


1) floatって何?簡単に説明

  • float は「小数を扱う数」の型です。たとえば 1.50.1-3.14 のような値。
  • 「小数点がある(または . を付けた)数」は float として扱われます。例:100.0float100int(整数)です。
>>> type(1.5)
<class 'float'>
>>> type(100)
<class 'int'>
Python

2) 基本的な演算ルール(例あり)

  • +, -, *, / は使えます。
  • 重要intfloat を混ぜて計算すると結果は 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
Python

3) 浮動小数点の「丸め誤差」について(超重要)

コンピュータは二進数で数を扱うため、有限のビット数で表現できない小数(たとえば 0.1)は近似値になります。そのため次のような結果になります:

>>> 0.1 + 0.2
0.30000000000000004
Python

見た目と異なる小さな誤差が出ることがあるので、浮動小数点の比較は直接 == でやらないのが基本です。代わりに math.isclose() を使います。

import math
math.isclose(0.1 + 0.2, 0.3)   # True
Python

4) 型変換(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
Python

math.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             # 円周率
Python

8) 実務でのベストプラクティス(初心者向け)

  • お金を扱う(通貨計算)→ float は避ける(丸め誤差が致命的)。decimal.Decimal を使う。
  • 表示だけ丸めたい → f"{x:.2f}"round() を使う。
  • 比較は math.isclose() を使う。
  • 整数で良いなら int を使う。float を不用意に使うと誤差が混じる。

9) 実用的な例(コード付き)

  1. 小数の合計と表示:
prices = [19.99, 5.5, 3.45]
total = sum(prices)
print(total)            # 28.94(でも内部で少し誤差があることも)
print(f"合計: {total:.2f} 円")  # 表示は 2 桁で見やすく
Python
  1. 切り捨て除算と余り:
a, b = 7, 2
print(a // b)   # 3
print(a % b)    # 1
Python
  1. 小数同士の切り捨て:
print(7.5 // 2.0)   # 3.0
Python
  1. 浮動小数点の比較:
import math
a = 0.1 + 0.2
print(a == 0.3)         # False
print(math.isclose(a, 0.3))  # True
Python

10) 練習問題(解答&解説付き)

初心者向けに段階をつけた 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 + floatfloat になります。


問題2(割り算)

7 / 27 // 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
Python

Decimal("0.1") のように文字列で渡すのがポイント(Decimal(0.1)float の誤差を引き継ぐため避ける)。


まとめ

  • float は便利だが「丸め誤差」がある点に注意。
  • 表示は f"{x:.2f}"、比較は math.isclose()、通貨は decimal.Decimal
  • 基本操作(+ - * / // %)はすぐ使えるので、まずコードを書いて動かしてみるのが上達の近道!
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました