Pythonで数値解析をするためには、基本となる数値演算を学ぶ必要があります。
その中でも基礎となるものとして、「算出演算子」や「端数処理」があります。
本記事では、そんなPython基礎となる算出演算子と端数処理について、詳しくご説明します。
算術演算子
Pythonで使用する算術演算子は下表の通りです。
演算子 | 内容 |
---|---|
a + b | 加算 |
a – b | 減算 |
a * b | 乗算 |
a / b | 除算 |
a % b | aをbで割った余り |
a ** b | aのb乗 |
a // b | aをbで割った商 |
加算
“+”演算子の使用例を以下にご紹介します。
#input
x = 10 + 20
print("10 + 20 = {}".format(x))
#output
10 + 20 = 30
減算
“-“演算子の使用例を以下にご紹介します。
#input
x = 10 - 20
print("10 - 20 = {}".format(x))
#output
10 - 20 = -10
乗算
“*”演算子の使用例を以下にご紹介します。
#input
x = 10 * 20
print("10 * 20 = {}".format(x))
#output
10 * 20 = 200
除算
“/”演算子の使用例を以下にご紹介します。
#input
x = 10 / 20
print("10 / 20 = {}".format(x))
#output
10 / 20 = 0.5
剰余演算
“%”演算子の使用例を以下にご紹介します。
#input
x = 19 % 5
print("19 % 5 = {}".format(x))
#output
19 % 5 = 4
べき乗演算
“**”演算子の使用例を以下にご紹介します。
#input
x = 2 ** 5
print("2 ** 5 = {}".format(x))
#output
2 ** 5 = 32
整数除算
“//”演算子の使用例を以下にご紹介します。
#input
x = 19 // 5
print("19 // 5 = {}".format(x))
#output
19 // 5 = 3
切り捨て・切り上げ
数値の切り捨てと切り上げには、Pythonに標準として用意されている「天井関数」と「床関数」を使用します。
天井関数
ある実数Xに対して、X以上の最大の整数を返す関数を天井関数と言います。
mathモジュールのmath.ceil()を使用した例をご紹介します。
#input
import math
a = math.ceil(10)
b = math.ceil(-10)
c = math.ceil(5.55)
d = math.ceil(-5.55)
print("ceil(10)={}".format(a))
print("ceil(-10)={}".format(b))
print("ceil(5.55)={}".format(c))
print("ceil(-5.55)={}".format(d))
#output
ceil(10)=10
ceil(-10)=-10
ceil(5.55)=6
ceil(-5.55)=-5
床関数
ある実数Xに対して、X以下の最大の整数を返す関数を床関数と言います。
mathモジュールのmath.floor()を使用した例をご紹介します。
#input
import math
a = math.floor(10)
b = math.floor(-10)
c = math.floor(5.55)
d = math.floor(-5.55)
print("floor(10)={}".format(a))
print("floor(-10)={}".format(b))
print("floor(5.55)={}".format(c))
print("floor(-5.55)={}".format(d))
#output
floor(10)=10
floor(-10)=-10
floor(5.55)=5
floor(-5.55)=-6
端数処理
数値の端数処理には、いくつかの方法があります。
以下に1つずつご紹介します。
round()関数
round()関数は、整数や浮動小数点数に対して、指定した桁数で四捨五入する関数です。
#input
a = round(1.49)
b = round(1.50)
c = round(-2.49)
d = round(-2.50)
print("round(1.49)={}".format(a))
print("round(1.50)={}".format(b))
print("round(-2.49)={}".format(c))
print("round(-2.50)={}".format(d))
#output
round(1.49)=1
round(1.50)=2
round(-2.49)=-2
round(-2.50)=-2
ここで、round(1.50)=2に対して、round(-2.50)=-2となっています。
これは、round()関数が偶数丸め(銀行丸め)と呼ばれるもので処理しているためです。
1.50に最も近い整数は1.0と2.0ですが、偶数である2.0を選択します。
同様に、-2.50に最も近い整数は-2.0と-3.0ですが、偶数である-2.0を選択します。
round関数を任意の桁数で丸める場合、引数に桁数ndigitsを指定します。
ndigits=0や指定なしの場合には、整数で丸めます。
ndigitsを正の値で指定した場合、小数点以下がndigits桁になるように丸めます。
ndigitsを負の値で指定した場合、ndigitsの絶対値の桁で丸めます。
以下に例を載せます。
#input
a = round(123.456,2)
b = round(123.456,-2)
c = round(-123.456,2)
d = round(-123.456,-2)
print("round(123.456,2)={}".format(a))
print("round(123.456,-2)={}".format(b))
print("round(-123.456,2)={}".format(c))
print("round(-123.456,-2)={}".format(d))
#output
round(123.456,2)=123.46
round(123.456,-2)=100.0
round(-123.456,2)=-123.46
round(-123.456,-2)=-100.0
format()メソッド
format()メソッドに数値を指定することで、小数点以下を四捨五入することができます。
#input
x = 123.456
print("{:.0f}".format(x))
print("{:.1f}".format(x))
print("{:.2f}".format(x))
#output
123
123.5
123.46
{:.0f}で整数に丸め、{:.Nf}で小数点以下N桁に丸めています。
Decimal.quantizeメソッド
decimalモジュールのquantize()メソッドを使用して、端数を処理することができます。
下例の通り、端数処理の方法(丸めモード)を好きに変えられます。
#input
#decimalモジュール内をまとめてインポート
from decimal import *
x = Decimal("1.5")
y = Decimal("-1.5")
#数値の切り捨て(負の無限大方向へ丸める)
a = x.quantize(Decimal("0"),rounding=ROUND_FLOOR)
b = y.quantize(Decimal("0"),rounding=ROUND_FLOOR)
#数値の切り上げ(正の無限大方向へ丸める)
c = x.quantize(Decimal("0"),rounding=ROUND_CEILING)
d = y.quantize(Decimal("0"),rounding=ROUND_CEILING)
#数値を原点方向へ丸める
e = x.quantize(Decimal("0"),rounding=ROUND_DOWN)
f = y.quantize(Decimal("0"),rounding=ROUND_DOWN)
#数値を原点から遠い方向へ丸める
g = x.quantize(Decimal("0"),rounding=ROUND_UP)
h = y.quantize(Decimal("0"),rounding=ROUND_UP)
print("a:",a,"b:",b)
print("c:",c,"d:",d)
print("e:",e,"f:",f)
print("g:",g,"h:",h)
#output
a: 1 b: -2
c: 2 d: -1
e: 1 f: -1
g: 2 h: -2
まとめ
この記事では、Python基礎となる算出演算子と端数処理について、ご説明しました。
本記事を参考に、ぜひ基礎を学んでみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!