今回は、小数点の四捨五入、切り上げ、切り捨てについてです。
- 四捨五入は、組み込み関数のround()やformat()を使います。
(但し、四捨五入の解釈がpython2とpython3で異なっているので、少し注意が必要です) - 切り上げ・切り捨ては、標準の組み込みライブラリのmathモジュールを使います。
これらの関数の使い方について、具体例を挙げてまとめました。
確認した環境
- OS: Ubuntu 16.04LTS
- Python: ver3.7.4
小数点を四捨五入する
標準組込み関数のround() とformat() を使います。
round(x, n)
基本的な使い方は以下です。
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で解釈が異なっており、結果が異なる場合があるので注意が必要です。こちらのサイト様が参考になります。
ちなみに、第二引数ndigitsに負の整数を設定すると整数部分が四捨五入されます。
>>> round(1234.567, -2)
1200.0
>>> round(1254.567, -2)
1300.0
>>> round(1254.567, -3)
1000.0
>>> round(1254.567, -4)
0.0
format(x, 書式)
標準関数format()の書式設定を使います。例えば小数点第3位を四捨五入して、小数2位まで表示するには、.2fと指定します。(※)
# 円周率を例にします。
>>> a = 3.141592653589793
# 整数値 (小数点第一位を四捨五入)
>>> format(a, '.0f')
'3'
# 小数点以下1桁 (小数点第二位を四捨五入)
>>> format(a, '.1f')
'3.1'
# 小数点以下2桁 (小数点第三位を四捨五入)
>>> format(a, '.2f')
'3.14'
# 小数点以下3桁 (小数点第四位を四捨五入)
>>> format(a, '.3f')
'3.142'
# 小数点以下5桁 (小数点第六位を四捨五入)
>>> format(a, '.5f')
'3.14159'
※)詳細は下記参照
公式リファレンス:書式指定ミニ言語仕様
【Python】format()による文字列の書式指定 | Hibiki Programming Notes
小数点の切り上げ
math.ceil(x)
math.ceil(x) は、引数 xの天井(ceiling)(x以上の最小の整数値)を返します。
# mathモジュールをインポート
>>> import math
# 円周率を例にします
>>> a = 3.141592653589793
#切り上げ
>>> math.ceil(a)
4
小数点の切り捨て
小数点の切り捨ては、math.floor(x) とint() が使えます。
math.floor(x)
引数 xの床(floor)(x以下の最大の整数値)を返します。
>>> import math
# 円周率を例にします
>>> a = 3.141592653589793
#切り捨て
>>> math.floor(a)
3
int(x)
引数 xの小数点以下が切り捨てられ整数値が返ります。
>>> import math
# 円周率を例にします
>>> a = 3.141592653589793
#切り捨て
>>> int(a)
3
まとめ
小数点の四捨五入、切り上げ、切り捨ての方法についてまとめました。
- 四捨五入: round()、format()
- 切り上げ: math.ceil()
- 切り捨て: math.floor(), int()
四捨五入については、Python2系とPython3系で解釈が異なっているので注意が必要です。