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'