TypeError: 'float' オブジェクトを Python で整数として解釈できない問題を修正

Rana Hasnain Khan 2023年10月10日
TypeError: 'float' オブジェクトを Python で整数として解釈できない問題を修正

TypeError: 'float' object cannot beinterpret as an integer エラーが発生する理由と、Python で解決する方法を紹介します。

Python の TypeError: 'float' オブジェクトを整数として解釈できません を修正する

Python は、科学計算、データ分析、機械学習など、多くの分野で広く使用されているプログラミング言語です。 Python の最も一般的なデータ型の 1つは浮動小数点数で、floatとも呼ばれます。

ただし、Python で float データ型を扱う場合、float を整数として解釈できないことを覚えておくことが重要です。

この記事では、この制限の背後にある理由と、Python で float および整数オブジェクトを操作する方法について説明します。 まず、float と整数の違いを理解することから始めましょう。

整数は小数点のない整数ですが、float は小数点または分数のある数値です。

たとえば、数値 7 は整数ですが、8.0 は float です。 同様に、9.6 も float です。

どちらのデータ型も数値を表しますが、Python では交換できません。 相互に解釈されるたびに、エラーをスローする可能性があります。

たとえば、以下に示すように、整数を含むべき変数が代わりに float を取得したとします。

x = 3.5
for a in range(x):
    print(a)

以下に示すように、これはエラーをスローします。

typeerror example

例からわかるように、Python の変数の型は、割り当てられた値に基づいて自動的に決定されます。 たとえば、変数 x に 3 を割り当てると、データ型は整数になります。 一方、変数 y に 3.5 を代入すると、以下に示すように float のデータ型になります。

x = 3
y = 3.5
print(type(x))
print(type(y))

上記のコードの出力を以下に示します。

Python の変数のデータ型

Python でこのエラーを取り除くには、2つの解決策があります。 最初の解決策は、整数が必要な場合は常に整数データ型を渡すようにすることです。

Python int() の組み込みメソッドを使用することで、他のデータ型を int に変換することで簡単に行うことができます。

以下に示すように、float 変数を int() メソッドに渡す例を見てみましょう。

x = 3.5
y = int(x)
for i in range(y):
    print(i)

上記のコードの出力は、次のようになります。

float オブジェクトの最初の解は Python で整数として解釈できません

上記のソリューションが示すように、単純なメソッド int() を使用して、任意のデータ型を整数に簡単に変換できます。 このエラーの別の解決策は、math.floor() または math.ceil() 関数を使用することです。

まず、これらの関数を使用するために math ライブラリをプロジェクトにインポートする必要があります。

math ライブラリは、Python と共にインストールされる Python の標準ライブラリです。 コードの import math 行でエラーが発生した場合は、次のコマンドを使用して簡単にインストールできます。

pip install math

ライブラリがインストールされたら、次のコード行を使用してプロジェクトにインポートできます。

import math

解決策に移る前に、この例で使用する 2つの関数 math.floor()math.ceil() について少し詳しく知っておくことが重要です。 math.floor() 関数は、指定された浮動小数点数を、指定された数値以下の最も近い整数に丸めるために使用されます。

math.ceil() 関数は、指定された浮動小数点数を、指定された数値以上の最も近い整数に丸めるために使用されます。 必要に応じて、上記の関数のいずれかを使用できます。

これらの関数の例を以下に示します。

import math

x = 3.7
floor_fun = math.floor(x)
ceil_fun = math.ceil(x)
print("The floor function will return: ")
print(floor_fun)
print("The ceil function will return: ")
print(ceil_fun)

上記のコードの出力を以下に示します。

float オブジェクトの 2 番目の解は Python で整数として解釈できません

例からわかるように、math.floor() 関数は数値を切り捨てます。 一方、math.ceil() 関数は数値を最も近い整数に切り上げます。

結論として、Python で float オブジェクトを整数として使用しようとすると、常に TypeError: 'float' オブジェクトを整数として解釈できません が発生します。 このエラーを回避するには、コードで使用されるデータ型に注意し、必要に応じて適切に変換することが重要です。

math ライブラリは、浮動小数点数を最も近い整数に丸めるための math.floor()math.ceil() などの便利な関数を提供します。 これらの問題を認識し、適切な方法を利用することで、一般的なエラーを回避し、コードがスムーズに実行されるようにすることができます。

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

関連記事 - Python Error