本記事ではPythonで数値の四捨五入を行う方法について解説します。
小数点第二位で四捨五入する方法や、切り上げ・切り捨てを行う方法についてもまとめました。
本記事を読むことで四捨五入に関する疑問を解決することができます。
Pythonで四捨五入を行う基本的なやり方
Pythonで四捨五入を行う基本的なやり方についてまとめました。
以下の順序に従って説明していきます。
- 四捨五入を行い整数にする
- 小数点第二位で四捨五入する
- 整数部分を四捨五入する
1)四捨五入を行い整数にする
まず、四捨五入を行い整数にするやり方をみていきましょう。
四捨五入するうえで活用するのが、round関数と呼ばれるものです。
round関数に数値を指定することで、その数値を四捨五入することが可能です。
○コード例
num = round(1.5)
print(num)
○実行結果
上記の例では「1.5」を四捨五入にして「2」にしています。
このようにround関数を使えば簡単に四捨五入することが可能です。
2)小数点第二位で四捨五入する
小数点第二位を四捨五入し、小数点第一位までの表記にする方法を解説します。
先程同様にround関数を活用します。
○コード例
num = round(1.54,1)
print(num)
○実行結果
小数点第二位や三位で四捨五入したい場合は、round関数の第二引数を指定する必要があります。
第二引数に「1」を指定することで、小数点第二位で四捨五入することが可能です。
小数点第三位、四位で四捨五入する例もみていきましょう。
○コード例
num1 = round(1.5468,1)
num2 = round(1.5468,2)
num3 = round(1.5468,3)
print(num1)
print(num2)
print(num3)
○実行結果
小数点第三位で四捨五入する場合は「2」、四位の場合は「3」を指定します。
このように、round関数の第二引数を指定することで実現します。
3)整数部分を四捨五入する
続いて、整数部分を四捨五入したい場合をみていきましょう。
たとえば、「1234」を四捨五入して「1230」にしたい場合などです。
整数部分を四捨五入する場合、round関数の第二引数に負の数を指定します。
○コード例
num1 = round(1234,-1)
num2 = round(1234,-2)
num3 = round(1234,-3)
print(num1)
print(num2)
print(num3)
○実行結果
上記のように負の数を指定することで整数部分で四捨五入が可能です。
Pythonの四捨五入の問題点
ここまでround関数を使った四捨五入方法について解説してきました。
round関数は簡単に使えて便利なのですが問題点があります。
それは特定の数の場合四捨五入した結果に誤差が生じてしまうことです。
例をみていきましょう。
○コード例
num = round(1.25,1)
print(num)
○実行結果
「1.25」を四捨五入すると本来は「1.3」になるはずですが、結果は「1.2」となっており、誤差が生じてしまっています。
このような結果になる理由は、round関数は「銀行家の丸め」と呼ばれる計算方法を使っており、切り捨てるべきか切り上げるべきかを判断する数字が「5」の場合、切り捨て処理を行ってしまう場合もあるからです。
また、コンピュータは2進数でしか数値を表現することができない関係でも誤差が生じることがあります。
2進数では小数点を正確に表現できない場合があるのです。
誤差を出したくない場合はdecimalモジュールを使う
では誤差を出さないためにはどうすれば良いのかというと、decimalモジュールを使います。
decimalモジュールは次のように扱います。
○コード例
from decimal import Decimal, ROUND_HALF_UP
num= Decimal(str(1.25)).quantize(Decimal('0.1'), rounding=ROUND_HALF_UP)
print(num)
○実行結果
decimalモジュールは使い方が少し複雑です。
まずDecimalの括弧の中に四捨五入したい数値を文字列型に変換して入れます。
続いて、後ろのDecimalの中に四捨五入した後の桁数を入れます。
最後の「rounding=」に四捨五入することを表す「ROUND_HALF_UP」を指定します。
これで、一般的な手法での四捨五入が実現しました。
Pythonで切り捨て・切り上げを行う方法
最後に、Pythonで切り捨て・切り上げを行う方法についてまとめました。
四捨五入と共に切り捨て・切り上げのやり方も覚えてみましょう。
- 切り捨て
- 切り上げ
1)切り捨て
Pythonで数値を切り捨てる方法について解説します。
切り捨てを行う場合、floorメソッドを使う必要があります。
○コード例
import math
num = math.floor(1.54)
print(num)
○実行結果
floorメソッドを使う場合、mathライブラリをインポートする必要があります。
上記のコードではfloorメソッドによって「1.54」の小数部分を切り捨てています。
2)切り上げ
今度は、切り上げ処理を行う方法をみていきます。
切り上げを行う場合はceilメソッドを活用します。
○コード例
import math
num = math.ceil(1.54)
print(num)
○実行結果
上記のコードでは、ceilメソッドによって「1.54」を「2」に切り上げています。
【補足】Pythonで桁数を取得したい場合
小数点○位で四捨五入をするために、小数点の桁数を取得したい場合があります。
そこで、補足として桁数を取得する方法を解説します。
○コード例
num = abs(1.54)
num = str(num).replace(".","")
print(len(num))
○実行結果
桁数を取得するには数値を文字列に変換する必要があります。
上記のコードではまずabs関数によって数値を絶対値に変換します。
そしてstr関数で数値を文字列型に変換しています。
最後にreplaceメソッドで「.」を除去し、len関数で長さを求めています。
これで桁数を取得することが可能です。
まとめ
本記事ではPythonで四捨五入を行う方法について解説しました。
四捨五入のやり方にはround関数を使うやり方とdecimalモジュールを使うやり方があります。
ただ、誤差を出したくないのであればdecimalモジュールを使うやり方をおすすめします。
decimalモジュールは少し構文が難しいですが、慣れてくればスムーズに計算できるでしょう。