Python

【Python】数値型と演算について

この記事では、Pythonの数値型の種類と演算方法を解説します。Pythonには、複数の数値型が用意されています。それぞれ違った特徴を持ち、その型を使って演算することができます。それでは、数値型について見ていきましょう❗️

Pythonの数値型

主にPythonで使用する数値型には、以下のようなものがあります。

int型(整数)

intは「integer」の略で、整数を扱うための型です。Pyhonのint型には有効桁数が設けられておらず、整数型はint型しかありません。

num = 1
print(num)

# 「,」の代わりに「_」が使える
num = 100_000
print(num)

実行結果

1
100000

float型(浮動小数点数)

float型は、浮動小数点数を扱うための型です。

num = 3.14
print(num)

# 指数表記も使える
num = 3.14e-2
print(num)

実行結果

3.14
0.0314

complex型(複素数)

complex型は、複素数を扱うための型です。

num = 1 + 2j
print(f'{num} = 実部: {num.real}, 虚部: {num.imag}')

# complex(real, [imag])
num = complex()
print(num)

実行結果

(1+2j) = 実部: 1.0, 虚部: 2.0
0j

特殊な数値型

decimal型(正確な10進数)

decimal型は、10進数を正確表現できる型です。コンピュータは、2進数を使って10進数を表現しているので、ちょくちょく値にブレが生じてしまいます。なので、正確に10進数を表現したい場合にはdecimal型を使います。

from decimal import Decimal

# floatを使った演算
print(1.1 + 2.2)

# decimalを使った演算
print(Decimal('1.1') + Decimal('2.2'))

実行結果

3.3000000000000003
3.3

Linkdecimal — 十進固定及び浮動小数点数の算術演算

Fraction型(有理数)

Fraction型は、有理数を扱える型となっています。

from fractions import Fraction

print(Fraction(40, -3))     # -40/3
print(Fraction('18/12'))    # 3/2
print(Fraction(1.1))        # 2476979795053773/2251799813685248

from decimal import Decimal

print(Fraction(Decimal('1.1')))  # 11/10

Linkfractions — 有理数

演算

Pythonに用意されている演算方法を確認していきます。

通常の演算

Pythonでは、以下のような演算が可能です。

# 足し算
add = 2 + 3  # 5

# 引き算
sub = 2 - 3  # -1

# 掛け算
mul = 2 * 3  # 6

# 割り算
div = 2 / 3  # 0.666666...

以下のような少し特殊な演算も用意されています。

# 剰余(余り) 
sur = 3 % 2  # 1

# べき乗 
p = 2 ** 3   # 8

# 切り捨て割り算 
t = 2 // 3   # 0

割り算を行うと結果が必ずfloat型になるので注意が必要です。

d = 2 / 2
print(d, type(d))  # 1.0 <class 'float'>

d = 3 / 2
print(d, type(d))  # 1.5 <class 'float'>

代入演算

代入演算することで、代入と演算をまとめて行うことができます。

代入演算 意味
x += y x = x + y
x -= y x = x – y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y
x **= y x = x ** y
x //= y x = x // y

演算結果を変数に代入する場合は、代入演算の方が簡潔に記述することができます。

# 通常の演算
a = 1
a = a + 2
print(a)  # 3

# 代入演算
a = 1
a += 2
print(a)  # 3

他にもビット演算用の代入演算子もありますが、ここでは紹介しません。

数値型の生成

他の型の値から数値型を生成することができます。

int型の生成

整数を生成するには、int()を使います。

s = '123'
f = 3.14
c = 1+2j

i = int(s)
print(i, type(i))  # 123 <class 'int'>

i = int(f)
print(i, type(i))  # 3 <class 'int'>

i = int(c)
print(i, type(i))  # TypeError: can't convert complex to int
実数から整数を生成すると、小数部分は必ず切り捨てられます

float型の生成

実数を生成するには、float()を使います。

s = '3.14'
i = 1
c = 1+2j

f = float(s)
print(f, type(f))  # 3.14 <class 'float'>

f = float(i)
print(f, type(f))  # 1.0 <class 'float'>

f = float(c)
print(f, type(f))  # TypeError: can't convert complex to float

complex型の生成

複素数を生成するには、complex()を使います。

s = '1+2j'
i = 1
f = 3.14

c = complex(s)
print(c, type(c))  # (1+2j) <class 'complex'>

c = complex(i)
print(c, type(c))  # (1+0j) <class 'complex'>

c = complex(f)
print(c, type(c))  # (3.14+0j) <class 'complex'>

# 第二引数で虚部を指定することもできる
c = complex(i, f)
print(c, type(c))  # (1+3.14j) <class 'complex'>

便利な関数

Pythonの数値型によく使われる関数を紹介します。

絶対値[abs()]

abs関数を使うことで絶対値を取得できます。引数に数値型を指定することで指定した値の絶対値を受け取ることができます。

絶対値 = abs(数値型)

サンプル

例えば以下のように使います。

num = -2.5
abs_num = abs(num)

print(abs_num)

実行結果

2.5

切り捨て商と剰余[divmod()]

divmod関数は、切り捨て商と剰余をまとめて取得できます。引数に2つの値を指定することで、切り捨て商と剰余をタプルとして返します。

(x // y, x % y) = divmod(x, y)

サンプル

r = divmod(5, 2)

print(r)

実行結果

(2, 1)

最大値・最小値[max()・min()]

max関数は最大値、min関数は最小値を返します。引数に複数の値やリストなどのコンテナオブジェクトを指定することで、その要素の中の最大値・最小値の値を受け取ることができます。

最大値 = max(値1, 値2, ..., 値N)

最小値 = min([要素1, 要素2, ..., 要素N])

サンプル

試しに最大値と最小値を取得してみます。

max_value = max([8, 1, 9, 2])
print(f'max: {max_value}')

min_value = min(8, 1, 9, 2)
print(f'min: {min_value}')

実行結果

max: 9
min: 1

べき乗[pow()]

pow関数を使うことでべき乗を計算できます。base引数のexp引数乗が返されます。

演算結果 = pow(base, exp)

サンプル

試しにべき乗を計算してみます。

print(pow(2, 3))

print(pow(2, -2))

実行結果

8
0.25

小数を丸める[round()]

round関数を使うことで小数を近いほうに丸めることができます。0.5のように距離が等しい場合、偶数になるように丸められます。引数に小数を指定することで小数が丸められた整数を受け取ることができます。

round(number)

第二引数を指定することで丸める小数の桁数を指定できます。

round(number, ndigits)

サンプル

試しに色々な値を丸めてみます。

print('距離が同じ場合')
print(0.5, round(0.5))
print(1.5, round(1.5))

print('桁数の指定')
PI = 3.1415
print(PI, round(PI))
print(PI, round(PI, 1))
print(PI, round(PI, 2))
print(PI, round(PI, 3))

実行結果

距離が同じ場合
0.5 0
1.5 2
桁数の指定
3.1415 3
3.1415 3.1
3.1415 3.14
3.1415 3.142

まとめ

この記事では、Pythonの数値の型と演算ついて解説しました。

難しい内容はなかったと思いますが、覚えることが多かったので忘れてしまったら読み返して徐々に慣れていってください。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』