Python: 文字列を数値に変換する int(), float()

Pythonで文字列を数値に変換する場合は、 int()関数float()関数を使用します。 どちらも組み込み関数なのでそのまま使えます。
ここではint()とfloat()の使い方と共に、いろいろな文字列を指定して 正しく変換されるかどうかを検証しています。

整数値に変換する int()

文字列を整数値に変換する場合は、int()関数を使います。

次のサンプルコードでは、文字列"123"の変換結果を表示するとともに、 type()関数で変換後の変数のデータ型も表示しています。

# 数値に変換
n = int("123")

print(type(n))
print(n)

# 実行結果
<class 'int'>
123

int("10.1")の場合は?

整数値ではなく、浮動小数点数となり得る文字列「"10.1"」をint()関数に指定した場合は どうなるのでしょうか?

小数点以下の部分が切り捨てらてint型の「10」になるのか、 それとも気を利かせてfloat型の「10.1」にしてくれるのでしょうか。

# 数値に変換
n = int("10.1")

print(type(n))
print(n)

# 実行結果
    n = int("10.1")
ValueError: invalid literal for int() with base 10: '10.1'

結果はエラーでした。 int()関数は、あくまで整数となり得る文字列でないとダメなようです。

int("abc")の場合は?

数値に変換できない文字列を指定した場合も、もちろんエラーです。

print(int("abc"))

# 実行結果
    print(int("abc"))
ValueError: invalid literal for int() with base 10: 'abc'

浮動小数点数に変換する float()

浮動小数点数に変換する場合はfloat()関数を使います。

次のサンプルコードでは、文字列"1.23"の変換結果と、 type()関数の結果を表示しています。

# 浮動小数点数に変換
n = float("1.23")

print(type(n))
print(n)

# 実行結果
<class 'float'>
1.23

float("10")は?

小数点以下がなく、整数値になり得る文字列「"10"」をfloatで変換するとどうなるでしょうか。
int型?それともfloat型?

n = float("10")

print(type(n))
print(n)

# 実行結果
<class 'float'>
10.0

type()で型を確認した結果 floatとなっており、 printで出力した結果も「10.0」 とちゃんとfloat型になっています。

float("1.0e2")は?

浮動小数点数方式の文字列の場合はどうでしょうか? 「1.0e2」が正しく評価された場合は10の2乗で「100.0」になるはずです。

# 数値に変換
n = float("1.0e2")

print(type(n))
print(n)

# 実行結果
<class 'float'>
100.0

この場合、floatの「100.0」と正しく変換されています。

float("abc")は?

数値に変換できない文字列を指定した場合は、もちろんエラーになります。

print(float("abc"))

# 実行結果
    print(float("abc"))
ValueError: could not convert string to float: 'abc'
Python