Pythonの数値を変換する色々な方法まとめ

Pythonの数値を変換する方法はいくつかあります。ここで基本的なものを全て紹介しておきますので、ぜひ使いこなせるようになっておきましょう。

目次

1. 浮動小数点や文字列を整数に変換する | int()

浮動小数点や、文字列として入力されている数値を、整数化する(= int型に変換する)には、int()関数を使います。型については、「Pythonの型とは | 確認と変換の方法」をご覧ください。

以下のように書きます。

In [0]:
int(数値)

関数やメソッドの () の中に入力する値を「引数(ひきすう)」といいます。int()関数では、引数に数値を入力します。

実際に見てみましょう。

1.1. 数値や文字列を整数に変換する

In [1]:
int(100.8)    #浮動小数点を整数に変換
int("100")    #文字列を整数に変換
number = 100.85
int(number)  #引数は変数でも構いません。
string = "100"
int(string)     #文字列変数でも構いません。
Out[1]:
100
100
100
100

簡単ですね。

ここで注目して頂きたいのは、小数点以下は切り捨てにして整数化するということです。また、入力時に、クオート(“”, or ”)がついているものは、数値ではなく「文字列」として扱われます。文字列については「Pythonの文字列操作に関して初心者が抑えておくべき全記事まとめ」で学習しましょう。

なお、「文字列として入力されている数値」が、整数でない場合は、int()関数ではエラーになります。

In [1]:
int("100.8") #文字列の数値が浮動小数点だとエラーになります
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-11-5a1a507445e3> in <module>()
----> 1 int("100.8") #文字列の数値が浮動小数点だとエラーになります
ValueError: invalid literal for int() with base 10: '100.8'

1.2. 進数の異なる数値を10進数で整数化する

int() 関数では、進数の異なる数値を、10進数に変換して整数化してくれます。次のように書きまあす。

In [0]:
int(文字列数値, 基数)

この場合、第一引数に数値を文字列で、第二引数に基数を入力します。

実際に見ると理解が早いですね。

In [1]:
int("14", 10) 
int("1010", 2)
int("14", 8)
int("14", 16) 
Out[1]:
14
10
12
20

10 進数の 14 は整数化しても 14 です。2 進数の 1010 は 10 進数では 10 です。8 進数の 14 は 10 進数では 12 です。16 進数の 14 は 10 進数では 20 です。

このように、第二引数に基数を入力すると、第一引数に文字列として入力した数値を、10 進数で整数化してくれます。第一引数が、文字列でない場合は、次のようにエラーになりますので、注意しましょう。

In [1]:
int(14, 16) 
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-777cd719f549> in <module>()
----> 1 int(14, 16)
TypeError: int() can't convert non-string with explicit base
ポイント!
・int()関数は、文字列や浮動小数点を整数化(int型に変換)する。
・小数点以下は切り下げる。
・文字列数値の浮動小数点を変換しようとするとエラーになる。
・異なる進数の数値を10進数に変換する時は、文字列数値である必要がある。

2. 小数点の切り上げと切り下げ

int()関数は、小数点以下を切り下げますが、小数点以下の切り上げ、切り下げを指定して、整数に変換する関数もあります。

  • math.ceil()関数
  • math.floor()関数

です。

2.1. 小数点以下を切り上げて整数化する | math.ceil()関数

math.ceil()関数は、次のように書きます。

In [0]:
import math
math.ceil(数値)

最初の「import math」は math モジュールをインポートして、その機能を使えるようにするものです。math.ceil()関数は、math モジュール内にある機能なので、このインポート文は必須です。

モジュールについては「Pythonのモジュールの解説とよく使うもの一覧」もご確認ください。

なお、引数に入力する数値は、変数でも構いません。以下が例です。

In [1]:
import math
math.ceil(1.1)   #小数点を切り上げます。
math.ceil(5/7)  #引数の値は計算式でも構いません。
number = 1.1
math.ceil(number) #引数は変数でも構いません。
Out[1]:
2
1
2

小数の位が切り上げられて、整数化されましたね。

2.2. 小数点以下を切り下げて整数化する | math.floor()関数

反対に、math.floor()関数は、小数点以下を切り下げる関数です。構文は、上記のmath.ceil()関数と同じなので省略しますね。

次の例をご覧ください。

In [1]:
import math
math.floor(1.1)   #小数点を切り上げます。
math.floor(5/7)  #引数の値は計算式でも構いません。
number = 1.1
math.floor(number) #引数は変数でも構いません。
Out[1]:
1
0
1

このように小数点以下が切り下げられて、整数化されます。

2.3. math.ceil() と math.floor() 関数の注意点

int()関数では、文字列の数値も整数化してくれましたが、これらの関数が、整数化できるのは数値だけです。それ以外ではエラーになります。

確認しておきましょう。

In [1]:
import math
math.ceil("1.1")   #文字列の数値を入れるとエラーになります。
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-24-81675fa439d5> in <module>()
      1 import math
----> 2 math.ceil("1.1")   #文字列の数値を入れるとエラーになります。
TypeError: must be real number, not str
In [2]:
import math
number = "1.1"
math.floor("number")   #文字列の変数を入れるとエラーになります。
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-23-a3d4d0dc5b98> in <module>()
      1 import math
      2 number = "1.1"
----> 3 math.floor("number")   #文字列の数値を入れるとエラーになります。
TypeError: must be real number, not str
ポイント!
・math.ceil()関数と、math.floor()関数は、mathモジュールをインポートしてから使う。
・整数化できるのは数値だけで文字列ではエラーになる。

3. 整数や文字列を浮動小数点に変換する | float()

Python 2 の場合は、整数を、浮動小数点に変えて、数値計算を行いたい場合が多々あります(その理由は「初心者のためのPythonの数値計算の基礎知識」の Python 3 と Python 2 の違いの項で解説しています)。

そのような場合には、float() 関数を使います。使い方は、上述の int() 関数と変わりませんので、見ていきましょう。

In [1]:
float(100)       #整数を浮動小数点に変換。
float("100")   #文字列の数字を浮動小数点に変換。
number = 100
float(number) #引数は変数でも構いません。
text = "100"
float(text)       #文字列変数でも構いません。
Out[1]:
100.0
100.0
100.0
100.0

特に int() 関数のような注意点はありませんので、気軽に使うことができますね。

4. 10進数を他の進数に変換する 

4.1. 他の進数に変換して文字列化 | bin(), oct(), hex()関数

10進数を他の進数に変換するには、それぞれ以下の関数を使います。

  • bin()関数:2進数に変換
  • oct()関数:8進数に変換
  • hex()関数:16進数に変換

引数に10進数で数値を入れます。

なお、これらは、今まで見てきたものと違って、引数に入力した数値を文字列化して返します。以下をご覧ください。

In [1]:
bin(10) #2進数に変換。
oct(10) #8進数に変換。
hex(10) #16進数に変換。
Out[1]:
'0b1010'
'0o12'
'0xa'

このように、文字列型では、前に、2進数には “0b”、8進数には”0o”、16進数には”0x”がつきます。文字列型でなく数値型(int型)の場合には、これらはつきません。

4.2. 数値型(int)型のままで進数変換 | format()メソッド

数値型(int型)のままで進数変換したい場合は、format()メソッドを使います。以下のように、換フィールドに、コロンの後に、10進数なら {:d}、2進数なら {:b}、8進数なら {:o}、16進数なら {:x} と書きます。

In [1]:
"{:d}".format(10) #10進数は"d"
"{:b}".format(10) #2進数は"b"
"{:o}".format(10) #8進数は"o"
"{:x}".format(10) #16進数は"x"
Out[1]:
'10'
'1010'
'12'
'a'

これについては、「Pythonの数値の桁数や丸めなどの操作のまとめ」の中の format()メソッドの詳しい解説も併せてご覧頂ければ、より理解が深まると思います。

5. まとめ

いかがだったでしょうか。

Pythonにおける数値の変換については、ここで紹介している関数を使いこなせるようになれば、まずは十分です。しっかり練習して下さいね。

なお、「Pythonの数値を文字列に変換する方法」では、str()関数を使った文字列化を紹介しています。こちらも併せて知っておくと良いでしょう。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる