Pythonでは、整数(int)と浮動小数点数(float)という2種類の基本的な数値型を扱います。これらは日常的な計算に広く使われますが、見た目が似ていても振る舞いには違いがあります。特に、型変換や計算結果には注意が必要なポイントがいくつかあります。本記事では、intとfloatの違いと基本的な扱い方、そして注意点について解説します。
Pythonの導入についてはこちら。
Python入門:最初のプログラムを作って実行する方法 – Lean Data Office
Python環境構築のやり方|初心者向け完全ガイド – Lean Data Office
Pythonの型についての解説はこちら。
Python入門:変数と型(データ型)を理解する – Lean Data Office
intとfloatの注意点
基本的な数値型である整数(int)と浮動小数点数(float)に戻って、それらを一緒に使ったときに何が起きるのか、型変換、そしてよくある注意点について見ていきましょう。
まず、整数同士で計算しても結果がfloatになることがある、という例を見ましたね。
20/4

20も4も整数ですが、結果は 5.0 というfloatになります。
これは、割り算では必ずしも整数になるとは限らないため、Pythonが常にfloatで返すようにしているためです。
同様に、floatとintを足し算すると、結果はfloatになります。掛け算や累乗でも同じです。

intへの変換と注意点
では、このfloatをintに戻したいときはどうするか。
int(4 ** 4.0)
このように int を使います。

ここで重要なのは、int は関数ではなく、クラスだということです。
見た目は関数のようですが、実はPythonの組み込みクラスです。
(str、float、listなどもすべてクラスです)
このように、ある型から別の型に変換することを、プログラミングではキャスト(casting)と呼びます。
ただし、floatからintに変換する際は注意が必要です。
int(8.9)
int(8.9999)

四捨五入せず、小数点以下を切り捨てるだけです
もし四捨五入したいなら:
round(8.9999)

9 になります
さらに:
round(8.67, 1)

小数第1位まで丸めることもできます。
floatの注意点
さて、floatの注意点を見てみましょう。
1.2 - 1.0

結果
0.19999999999999996
本来は0.2のはずなのにずれてしまっていることがわかります。
なぜこうなるかというと、floatはメモリ上で「2進数」で表現されるからです。
- メモリは有限
- 正確に表せない数がある
- 近い値で近似している
その結果、誤差が出るのです。
round(1.2 - 1.0, 2)
必要な桁数で丸めることで、解決できます。

floatを扱い際に重要なのは、以下の点です。
- floatは「近似値」
- 完全に正確ではない
- 金額など正確さが必要な場合は注意
整数と浮動小数点数は、それぞれ用途に応じて使い分けることが重要です。intへの変換は小数点以下を切り捨てるため、意図しない結果になる場合があります。また、floatは誤差を含む近似値であるため、計算結果が完全に正確にならないことがあります。これらの特性を理解し、必要に応じてround関数などを活用することで、より正確な処理が行えるようになります。