sec01 - 整数と浮動小数点数の変換

Pythonに限らず、プログラミング言語は型を変換することができます。int型とfloat型の変換や、数値文字の羅列(文字の数字を並べたもの)として変換することもできます。このレクチャーでは、数字に関する変換を学習します。

(数値から文字への変換・文字から数値への変換は、文字(String型)についての学習を終えた後で行います。)

整数と浮動小数点数の変換

Pythonは計算結果を適切に処理し、小数点の付く結果の場合はfloat型で値を返すなど、柔軟に対応します。しかし、中にはfloatではなくint型で結果が欲しいということもあるでしょう。その場合にどのようにコードを書けばよいのかを解説します。

int()

"int()"は丸カッコの中に入力した数値をint型(整数)に変換する関数です。。"int()"は"小数部分を削除する"ような挙動になり、"4.8"は"4"に、"-4.8"は"-4"になります。つまり、"四捨五入"や"負の無限大の方向に丸められる"ような挙動ではないことに注意してください。

コードを書いて、結果を確認してみましょう。

# (A)
result1 = int(4.8)
print('(A) int(4.8):', result1)

(A) まず基本の形ですが、"int(4.8)"のように何かしらの数値を丸カッコの中に入力して実行します。丸カッコの中に入力する値は、浮動小数点数だけではなく、整数の値を入力しても問題なく動きます。(ただし、整数の場合は同じ値が結果として出力されます。)

上記コードを実行すると、"4"が結果として出力されます。"小数部分を削除する"ような挙動になっていることが確認できます。

# (B)
float_number = -2.625
result2 = int(float_number)
print('(B) int(-2.625):', result2)

(B) 次に、上記コードを実行してみましょう。このコードは、マイナスの浮動小数点数を一度変数に代入した後に、"int()"で整数への変換を行っています。実際にコードを書く時は、丸カッコの中に変数を指定して書くことが多いでしょう。

上記コードを実行すると、"-2"が結果として出力されます。マイナスの値でも"小数部分を削除する"ような挙動になり、".625"の部分が削除され、"-2"の部分だけが残った結果が出力されます。"四捨五入"や"負の無限大の方向に丸められる"ような挙動の場合だと、"-3"が結果として出力されるので、それらとは挙動が異なることに注意しましょう。

# (C)
numA = 8
numB = 5
result3 = int(numA / numB)
print('(C) int(8 / 5):', result3)

(C) 上記コードは、割り算の結果を整数にしようとしています。"8 / 5" の結果は"1.6"なので、".6"の部分が削除され、"1"が結果として返されます。

# (D)
numA = -8
numB = 5
calc_result = numA / numB
result4 = int(calc_result)
print('(D) -8 / 5 :', calc_result)
print('(D) int(calc_result):', result4)

(D) この例は(C)と似ていますが、一度計算結果を"calc_result"変数へ代入し、その後で整数に変換しています。このように、"計算"と"整数への変換"を2行に分けて書くこともできます。

(D)のコードの結果ですが、"-8 / 5"の計算結果は"-1.6"となり、それを"int()"で整数に変換しています。"-1.6"の小数部分が削除されて最終的には"-1"が結果として返ってきます。

float()

"float()"は、丸カッコの中で指定した値をfloat型(浮動小数点数)へ変換する関数です。

次のコードを実行してみてください。

# (E)
result5 = float(5)
print('(E) float(5):', result5)

このコードは、整数の"5"を"float()"で浮動小数点数に変換しています。結果は"5.0"になります。整数をfloat変換しても、".0"が加わるだけで値としては変わらないですし、丸カッコの中に浮動小数点数を入力した場合も同じ値が出力されるだけです。

また、Python3の場合は、"整数/整数"の割り算の結果が浮動小数点数の場合に、適切にfloat型で結果を返してくれるということもあり、数値をfloatへ変換する処理はほとんど使われないかと思います。

Python3で"float()"を使うとしたら、文字列を浮動小数点数に変換するケースが考えられます。例えば、文字としての"'123.4'"は四則演算などの計算に使うことができないので、数値の"123.4"に変換する必要があります。(文字列との変換については、専用のレクチャーで解説します。)

Python3以外でのfloat()変換について

過去のレクチャーでも解説しましたが、Python3では"整数/整数"の割り算でも、計算結果が浮動小数点数の場合はfloat型で結果を返してくれます。

しかし、Python2や他のプログラミング言語の中には"整数/整数"の結果を整数でのみ返すものが存在します。ですので適宜計算の中に浮動小数点数を組み込む必要があります。

result = float(numA) / numB

上記のように、変数に代入されている値が整数の可能性がある場合は、計算式に浮動小数点数を確実に組み込むために"float()"を使用します。

result = numA / 5.0

また、割る数か割られる数が定数の場合は、"5.0"のように明示的に浮動小数点数を計算式に組み込んで、浮動小数点数の結果を得ようとします。

(※ Pyhton3については、計算結果に応じて自動的に整数か浮動小数点数が返ってくるので、このような対応は必要ありません。)

おすすめの記事