Pythonの数値を変換する方法はいくつかあります。ここで基本的なものを全て紹介しておきますので、ぜひ使いこなせるようになっておきましょう。
1. 浮動小数点や文字列を整数に変換する | int()
浮動小数点や、文字列として入力されている数値を、整数化する(= int型に変換する)には、int()関数を使います。型については、「Pythonの型とは | 確認と変換の方法」をご覧ください。
以下のように書きます。
int(数値)
関数やメソッドの () の中に入力する値を「引数(ひきすう)」といいます。int()関数では、引数に数値を入力します。
実際に見てみましょう。
1.1. 数値や文字列を整数に変換する
int(100.8) #浮動小数点を整数に変換
int("100") #文字列を整数に変換
number = 100.85
int(number) #引数は変数でも構いません。
string = "100"
int(string) #文字列変数でも構いません。
簡単ですね。
ここで注目して頂きたいのは、小数点以下は切り捨てにして整数化するということです。また、入力時に、クオート(“”, or ”)がついているものは、数値ではなく「文字列」として扱われます。文字列については「Pythonの文字列操作に関して初心者が抑えておくべき全記事まとめ」で学習しましょう。
なお、「文字列として入力されている数値」が、整数でない場合は、int()関数ではエラーになります。
int("100.8") #文字列の数値が浮動小数点だとエラーになります
1.2. 進数の異なる数値を10進数で整数化する
int() 関数では、進数の異なる数値を、10進数に変換して整数化してくれます。次のように書きまあす。
int(文字列数値, 基数)
この場合、第一引数に数値を文字列で、第二引数に基数を入力します。
実際に見ると理解が早いですね。
int("14", 10)
int("1010", 2)
int("14", 8)
int("14", 16)
10 進数の 14 は整数化しても 14 です。2 進数の 1010 は 10 進数では 10 です。8 進数の 14 は 10 進数では 12 です。16 進数の 14 は 10 進数では 20 です。
このように、第二引数に基数を入力すると、第一引数に文字列として入力した数値を、10 進数で整数化してくれます。第一引数が、文字列でない場合は、次のようにエラーになりますので、注意しましょう。
int(14, 16)
・int()関数は、文字列や浮動小数点を整数化(int型に変換)する。
・小数点以下は切り下げる。
・文字列数値の浮動小数点を変換しようとするとエラーになる。
・異なる進数の数値を10進数に変換する時は、文字列数値である必要がある。
2. 小数点の切り上げと切り下げ
int()関数は、小数点以下を切り下げますが、小数点以下の切り上げ、切り下げを指定して、整数に変換する関数もあります。
- math.ceil()関数
- math.floor()関数
です。
2.1. 小数点以下を切り上げて整数化する | math.ceil()関数
math.ceil()関数は、次のように書きます。
import math
math.ceil(数値)
最初の「import math」は math モジュールをインポートして、その機能を使えるようにするものです。math.ceil()関数は、math モジュール内にある機能なので、このインポート文は必須です。
モジュールについては「Pythonのモジュールの解説とよく使うもの一覧」もご確認ください。
なお、引数に入力する数値は、変数でも構いません。以下が例です。
import math
math.ceil(1.1) #小数点を切り上げます。
math.ceil(5/7) #引数の値は計算式でも構いません。
number = 1.1
math.ceil(number) #引数は変数でも構いません。
小数の位が切り上げられて、整数化されましたね。
2.2. 小数点以下を切り下げて整数化する | math.floor()関数
反対に、math.floor()関数は、小数点以下を切り下げる関数です。構文は、上記のmath.ceil()関数と同じなので省略しますね。
次の例をご覧ください。
import math
math.floor(1.1) #小数点を切り上げます。
math.floor(5/7) #引数の値は計算式でも構いません。
number = 1.1
math.floor(number) #引数は変数でも構いません。
このように小数点以下が切り下げられて、整数化されます。
2.3. math.ceil() と math.floor() 関数の注意点
int()関数では、文字列の数値も整数化してくれましたが、これらの関数が、整数化できるのは数値だけです。それ以外ではエラーになります。
確認しておきましょう。
import math
math.ceil("1.1") #文字列の数値を入れるとエラーになります。
import math
number = "1.1"
math.floor("number") #文字列の変数を入れるとエラーになります。
・math.ceil()関数と、math.floor()関数は、mathモジュールをインポートしてから使う。
・整数化できるのは数値だけで文字列ではエラーになる。
3. 整数や文字列を浮動小数点に変換する | float()
Python 2 の場合は、整数を、浮動小数点に変えて、数値計算を行いたい場合が多々あります(その理由は「初心者のためのPythonの数値計算の基礎知識」の Python 3 と Python 2 の違いの項で解説しています)。
そのような場合には、float() 関数を使います。使い方は、上述の int() 関数と変わりませんので、見ていきましょう。
float(100) #整数を浮動小数点に変換。
float("100") #文字列の数字を浮動小数点に変換。
number = 100
float(number) #引数は変数でも構いません。
text = "100"
float(text) #文字列変数でも構いません。
特に int() 関数のような注意点はありませんので、気軽に使うことができますね。
4. 10進数を他の進数に変換する
4.1. 他の進数に変換して文字列化 | bin(), oct(), hex()関数
10進数を他の進数に変換するには、それぞれ以下の関数を使います。
- bin()関数:2進数に変換
- oct()関数:8進数に変換
- hex()関数:16進数に変換
引数に10進数で数値を入れます。
なお、これらは、今まで見てきたものと違って、引数に入力した数値を文字列化して返します。以下をご覧ください。
bin(10) #2進数に変換。
oct(10) #8進数に変換。
hex(10) #16進数に変換。
このように、文字列型では、前に、2進数には “0b”、8進数には”0o”、16進数には”0x”がつきます。文字列型でなく数値型(int型)の場合には、これらはつきません。
4.2. 数値型(int)型のままで進数変換 | format()メソッド
数値型(int型)のままで進数変換したい場合は、format()メソッドを使います。以下のように、換フィールドに、コロンの後に、10進数なら {:d}、2進数なら {:b}、8進数なら {:o}、16進数なら {:x} と書きます。
"{:d}".format(10) #10進数は"d"
"{:b}".format(10) #2進数は"b"
"{:o}".format(10) #8進数は"o"
"{:x}".format(10) #16進数は"x"
これについては、「Pythonの数値の桁数や丸めなどの操作のまとめ」の中の format()メソッドの詳しい解説も併せてご覧頂ければ、より理解が深まると思います。
5. まとめ
いかがだったでしょうか。
Pythonにおける数値の変換については、ここで紹介している関数を使いこなせるようになれば、まずは十分です。しっかり練習して下さいね。
なお、「Pythonの数値を文字列に変換する方法」では、str()関数を使った文字列化を紹介しています。こちらも併せて知っておくと良いでしょう。
コメント