Pythonの整数と浮動小数点数(int・float)の基礎と注意点

python logo notext.svg

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
image

20も4も整数ですが、結果は 5.0 というfloatになります。
これは、割り算では必ずしも整数になるとは限らないため、Pythonが常にfloatで返すようにしているためです。

同様に、floatとintを足し算すると、結果はfloatになります。掛け算や累乗でも同じです。

image

intへの変換と注意点

では、このfloatをintに戻したいときはどうするか。

int(4 ** 4.0)

このように int を使います。

image

ここで重要なのは、int は関数ではなく、クラスだということです。
見た目は関数のようですが、実はPythonの組み込みクラスです。
(str、float、listなどもすべてクラスです)

このように、ある型から別の型に変換することを、プログラミングではキャスト(casting)と呼びます。

ただし、floatからintに変換する際は注意が必要です。

int(8.9)
int(8.9999)
image

四捨五入せず、小数点以下を切り捨てるだけです

もし四捨五入したいなら:

round(8.9999)
image

9 になります

さらに:

round(8.67, 1)
image

小数第1位まで丸めることもできます。

floatの注意点

さて、floatの注意点を見てみましょう。

1.2 - 1.0
image

結果

0.19999999999999996

本来は0.2のはずなのにずれてしまっていることがわかります。

なぜこうなるかというと、floatはメモリ上で「2進数」で表現されるからです。

  • メモリは有限
  • 正確に表せない数がある
  • 近い値で近似している

その結果、誤差が出るのです。

round(1.2 - 1.0, 2)

必要な桁数で丸めることで、解決できます。

image

floatを扱い際に重要なのは、以下の点です。

  • floatは「近似値」
  • 完全に正確ではない
  • 金額など正確さが必要な場合は注意

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

筋トレとオートメーションが趣味。 モバイルアプリ個人開発者。 データ処理・可視化とレポートにハマり備忘録と情報共有のためにブログ開設し運営している。