Pythonでの数値型の基礎と演算子の使い方
Pythonで数値型を使うと、数値を扱うプログラムを書くことができます。本記事では、数値型の基礎的な使い方について説明します。また、数値型に対する四則演算やビット演算、文字列との演算、ブール値の使い方についても解説します。Pythonのバージョンは3系を前提としています。
数値と数値リテラルの基礎
Pythonでは、整数、浮動小数点数、複素数の3つの数値型があります。それぞれの型に対するリテラルの書き方は以下の通りです。
以下は、各数値型に対する演算の例です。
# 整数
a = 10
b = 3
print(a + b) # 13
print(a - b) # 7
print(a * b) # 30
print(a / b) # 3.3333333333333335
print(a // b) # 3 (切り捨て除算)
print(a % b) # 1 (余り)
print(a ** b) # 1000 (べき乗)
# 浮動小数点数
a = 3.14
b = 2.71
print(a + b) # 5.85
print(a - b) # 0.43
print(a * b) # 8.5094
print(a / b) # 1.1592592592592592
# 複素数
a = 1 + 2j
b = 2
print(a + b) # (3+2j)
print(a - b) # (-1+2j)
print(a * b) # (2+4j)
print(a / b) # (0.5+1j)
数値の演算子の基礎
Pythonの数値型には、以下のような四則演算子があります。
数値型 | リテラルの書き方 |
---|---|
整数 | 10, 0b1010(2進数), 0o12(8進数), 0xa(16進数) |
浮動小数点数 | 3.14, 314e-2 |
複素数 | 1+2j, 1.5-2.5j |
以下は、四則演算の例です。
a = 10
b = 3
print(a + b) # 13
print(a - b) # 7
print(a * b) # 30
print(a / b) # 3.3333333333333335
print(a // b) # 3 (切り捨て除算)
print(a % b) # 1 (余り)
print(a ** b) # 1000 (べき乗)
ここでは演算子を用いた四捨五入について絞って解説しています。記事後半では更に便利な四捨五入、切り上げ、切り捨てやPythonの偶数丸めについて解説しているのでそちらも参考にしてください。
演算子の優先順位
演算子の優先順位と結合規則は、以下のようになっています。
優先順位 | 演算子 | 記号 |
---|---|---|
1 | () | |
2 | ** | |
3 | *, /, //, % | |
4 | +, – |
以下は、演算子の優先順位を誤った場合の例です。
a = 10
b = 3
c = 2
print(a + b * c) # 16 (3 * 2 = 6, 10 + 6 = 16)
print((a + b) * c) # 26 (10 + 3 = 13, 13 * 2 = 26)
ビット演算と演算子
ビット演算とは、2進数においてビット単位での演算を行うことです。Pythonには、以下のようなビット演算子があります。
演算子 | 記号 | 説明 |
---|---|---|
AND | & | 2つの数値のビットごとのANDを計算する |
OR | | | 2つの数値のビットごとのORを計算する |
XOR | ^ | 2つの数値のビットごとの排他的ORを計算する |
NOT | ~ | 1つの数値のビットごとのNOTを計算する |
左シフト | << | 数値のビット |
文字列を数値に変換して数値と演算する
文字列を数値に変換するには、int()
やfloat()
関数を使います。
a = "10"
b = "3.14"
c = "3+4j"
print(int(a) + 5) # 15
print(float(b) - 1) # 2.1400000000000006
print(complex(c) * 2) # (6+8j)
ただし、変換できない文字列を渡すと、ValueError
が発生します。
a = "abc"
print(int(a)) # ValueError
ブール値(True、False)の使い方
Pythonには、ブール値としてTrue
とFalse
があります。以下は、ブール値を使った演算の例です。
a = True
b = False
print(a and b) # False
print(a or b) # True
print(not a) # False
ブール値は、比較演算子を使って値を比較する際にもよく使われます。以下は、比較演算子を使ったブール値の例です。
a = 10
b = 3
print(a > b) # True
print(a < b) # False
print(a == b) # False
print(a != b) # True
その他の数値演算
ルート(平方根)計算
数値の平方根を計算するには、mathモジュールのsqrt()関数を使用します。
import math
# 整数
a = 16
print(math.sqrt(a)) # 4.0
# 浮動小数点数
a = 2.5
print(math.sqrt(a)) # 1.5811388300841898
以下の記事でさらにルート計算(平方根)について掘り下げているので参考にしてみてください。
絶対値
数値の絶対値を計算するには、組み込み関数のabs()を使用します。
# 整数
a = -10
print(abs(a)) # 10
# 浮動小数点数
a = -2.5
print(abs(a)) # 2.5
累乗計算
数値の累乗を計算するには、組み込み関数のpow()を使用します。
# 整数
a = 2
b = 3
print(pow(a, b)) # 8
# 浮動小数点数
a = 2.5
b = 2
print(pow(a, b)) # 6.25
累乗計算には**
演算子を使った方法もあります。もっと深く理解したい場合は以下の記事で解説しているので参考にしてみてください。
四捨五入
数値の四捨五入を計算するには、組み込み関数のround()を使用します。
# 整数
a = 10
b = 3
print(round(a/b)) # 3
# 浮動小数点数
a = 3.14159
print(round(a, 2)) # 3.14
切り上げに関する関数
数値を切り上げるには、mathモジュールのceil()関数を使用します。以下は、ceil()関数を使用した例です。
import math
# 整数
a = 10
b = 3
print(math.ceil(a/b)) # 4
# 浮動小数点数
a = 3.14159
print(math.ceil(a)) # 4
切り捨てに関する関数
数値を切り捨てるには、mathモジュールのfloor()関数を使用します。以下は、floor()関数を使用した例です。
import math
# 整数
a = 10
b = 3
print(math.floor(a/b)) # 3
# 浮動小数点数
a = 3.14159
print(math.floor(a)) # 3
丸めに関する関数
数値を丸めるには、組み込み関数のround()を使用しますが、mathモジュールにはround()関数の小数点以下の桁数を指定することができる関数が用意されています。
import math
# 整数
a = 10
b = 3
print(round(a/b)) # 3
# 浮動小数点数
a = 3.14159
print(round(a, 2)) # 3.14
# round()関数の小数点以下の桁数を指定することもできる
print(math.trunc(a*100)/100) # 3.14
また、mathモジュールには、小数点以下の桁数を指定せずに数値を丸める関数として、math.floor()やmath.ceil()のような切り捨てや切り上げを行う関数が用意されています。
import math
# round()関数と同じような丸め方をする関数
print(math.floor(3.49 + 0.5)) # 3
print(math.floor(3.50 + 0.5)) # 4
print(math.floor(3.51 + 0.5)) # 4
print(math.floor(-3.49 + 0.5)) # -3
print(math.floor(-3.50 + 0.5)) # -4
print(math.floor(-3.51 + 0.5)) # -4
# round()関数と同じような丸め方をする関数
print(math.ceil(3.49 - 0.5)) # 3
print(math.ceil(3.50 - 0.5)) # 4
print(math.ceil(3.51 - 0.5)) # 4
print(math.ceil(-3.49 - 0.5)) # -3
print(math.ceil(-3.50 - 0.5)) # -3
print(math.ceil(-3.51 - 0.5)) # -4
まとめ
本記事では、Pythonで数値型を扱う基本的な方法について解説しました。数値リテラル、四則演算、ビット演算、文字列を数値に変換する方法、ブール値の使い方について学びました。Pythonを使って数値を扱う場合は、この記事で紹介した知識を活用してみてください。
コメント