数値型と算術演算子

数値型と算術演算子

Python3 の数値型

 Python3 の 数値型

 整数型 (int)
 浮動小数点数型 (float)
 複素数型 (complex)

の 3 種類に分類されます。プログラミング言語の種類によっては、型を予め宣言しておくものもあるのですが、Python では その数値をどのように記述するか によって数値の型が決まります。

Type関数で型を調べます

 データ型は type関数によって調べることができます。

 100 と記述された数値の型を調べてみます。

x = 100
print(type(x))
<class 'int'>

 クラスは int であると表示されました。つまり 100 は整数型です。

 同じ 100 でも 100.0 と書けば浮動小数点数型となります:

x = 100.0
print(type(x))
<class 'float'>

 
 浮動小数点数は次のような書き方をすることもできます。

# 1.25 × 10**3
x = 1.25e3
print(x)
1250

 指数部を負にすることもできます。1000 × 10-3 は次のように書きます。

x = 1000.0e-3
print(x)
1.0

 
 複素数型は「実部 + 虚部j」の形式で記述します。

x = 2 + 3j
print(type(x))
<class 'complex'>

長整数型 (long) はありません

 Python2 では、扱う桁の大きさに応じて整数型 (int) と長整数型 (long) の 2 種類が用意されていましたが、Python3 では、両者は桁に上限のない整数型 (int) に統合されました。
 

Python3 の算術演算子(代数演算子)

 Python3 における算術演算子 を確認しておきましょう。

加減乗除

 基本的な加減乗除は「 + 」,「 - 」,「 * 」,「 / 」によって実行できます。
 具体的な計算例を見てみましょう。

print(15 + 10)
print(15 - 10)
print(15 * 10)
print(15 / 10)
25
5
150
1.5

  

べき乗(指数計算)

「 ** 」はべき乗を計算します。
 たとえば、「10 の 0.5 乗」は次のように記述します。

x = 10 ** 0.5
print(x)
3.1622776601683795

 

切り捨て除算

 「 / 」が除算の結果を小数で返すのに対して、「 // 」は割り算の商だけを返します。
 つまり 切り捨て除算 を実行します。

x = 10 // 3
print(x)
3

 「 // 」を使って負の数を割り算するときは注意が必要です。
 たとえば -15 を 6 で割ってみると、計算結果は -2 とはなりません。
 -15/2 = -2.5 を超えない最小整数を計算します:

x = -15 // 6
print(x)
-3

  

剰余算

 「 % 」は 剰余算 を実行します。
 つまり割り算したときの余りを返します。
 10 を 3 で割ったときの余りを計算させるには以下のように記述します。

x = 10 % 3
print(x)
1

 

型の異なる数値同士の演算

 冒頭で Python3 では整数型 (int)、浮動小数点数型 (float)、複素数型 (complex) という 3 種類の数値型があると説明しましたが、もし異なる型の数値同士で演算を行なったらどうなるのか気になるところです。試しに浮動小数点数型の数値 10.0 と整数型の数値 5 を加えてみましょう。

10.0 + 5
15.0

 結果は浮動小数点数型となっています。
 今度は複素数型の 1 + 2i と整数型の 3 を加えてみます。

(1 + 2j) + 3
(4 + 2j)

 複素数型で返ってきました。
 このように、Python では型の異なる数値同士で演算すると、より広いほうの型に合わせられます。

算術演算子の優先順位

 演算子には優先順位 (プログラム実行時に処理する順序) が決められています。算術演算子の場合は、皆さんが学校の算数や数学で習った順序とほぼ同じです。つまり優先順位の高い順に

 ( )、べき乗、掛け算、割り算、足し算、引き算

となっています。たとえば次のような数式を記述してみます:

x = 20/4 + 7
print(x)
12.0

 まず最初に 20 を 4 で割ってから を加えて 12.0 となっています(除算があるので、結果は float型数値が返ります)。20 を 4 と 7 を加えた数字で割りたいときには ( ) を使います。

x = 20/(4 + 7)
print(x)
1.818181818181

 足し算と引き算に優先順位が決められていることを不思議に思うかもしれません。足し算と引き算は順序を変えても結果は同じはずです。これはあくまで Python がプログラム実行時に処理する順番が決まっているというだけのことなので、あまり気にする必要はありません。