[Python] 小数点の四捨五入、切り上げ、切り捨て(round, math.ceil, math.floor)

今回は、Pythonにおける小数点の四捨五入、切り上げ、切り捨ての方法についてです。

  • 四捨五入については、組み込み関数のround()やformat()を使うと便利です。
    (但し、四捨五入の解釈がpython2とpython3で異なっているので、少し注意が必要かもです)
  • 切り上げ、切り捨てについては、標準の組み込みライブラリのmathモジュールを使います。

これらの関数の使い方について、具体例を交えながら解説していきます。
※ 2019/4/8 記事更新

確認した環境

  • OS: Ubuntu 16.04LTS
  • Python: ver3.7.2@Anaconda

数値の四捨五入

2つのやり方を挙げます。

round()を使う方法

round()の基本的な使い方は以下です。

round(number[, ndigits])

引数はそれぞれ、

  • 第一引数number : 四捨五入したい値
  • 第二引数ndigits : 四捨五入後の小数点の桁数

を指定します。第二引数ndigitsに何も設定しない場合は、その数値に最も近い整数値を返します。
具体的な例を以下に示します。

# 円周率を例にします!
>>> a
3.141592653589793

# 第二引数を省略した場合は、最も近い整数値となる
>>> round(a)
3

# 小数点以下1桁 (小数点第二位を四捨五入)
>>> round(a, 1)
3.1

# 小数点以下2桁 (小数点第三位を四捨五入)
>>> round(a, 2)
3.14

# 小数点以下3桁 (小数点第四位を四捨五入)
>>> round(a, 3)
3.142

但し、四捨五入はPython2とPython3で解釈が異なっており、結果が異なる場合があるので注意が必要です。こちらのサイト様が参考になります。

format()で指定する方法

format()で四捨五入を表現することができます。例えば、小数点2桁の数値を表すには‘{:03.2f}’と表記します。
具体的な例を以下に示します。

# 円周率を例にします。
>>> a = 3.141592653589793

# 整数値 (小数点第一位を四捨五入)
>>> '{0:.0f}'.format(a)
'3'

# 小数点以下1桁 (小数点第二位を四捨五入)
>>> '{0:.1f}'.format(a)
'3.1'

# 小数点以下2桁 (小数点第三位を四捨五入)
>>> '{0:.2f}'.format(a)
'3.14'

# 小数点以下3桁 (小数点第四位を四捨五入)
>>> '{0:.3f}'.format(a)
'3.142'

# 小数点以下5桁 (小数点第六位を四捨五入)
>>> '{0:.5f}'.format(a)
'3.14159'

尚、format()関数の使い方について、詳しくはこちらの記事をご覧ください。

小数点の切り上げ、切り捨て

標準組み込みライブラリのmathモジュールを使います。

小数点の切り上げ

math.ceil(x)を使います。

引数 x に数値を設定すると、その数値の天井(x以上の最小の整数値)を返します。

小数点の切り捨て

math.floor(x)を使います。

引数 x に数値を設定すると、その数値の床(x以下の最大の整数値)を返します。

具体的な例を示します。

# mathモジュールをインポート
>>> import math

# ここでも円周率を例にします
>>> a = 3.141592653589793

#切り上げ
>>> math.ceil(a) 
4

#切り捨て
>>> math.floor(a) 
3

まとめ

数値の四捨五入、切り上げ、切り捨ての方法についてまとめました。

  • 四捨五入: round()、format()
  • 切り上げ、切り捨て: math.ceil()、math.floor()

四捨五入については、Python2系とPython3系で解釈が異なっているので注意が必要です。

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

[Sponsor link]