記事の内容
この記事では、Pythonで四捨五入を扱う方法を紹介します。
なお、このコードはPythonの3系で書かれています。
round関数の使い方
round関数は、以下のように使います。
round(数値, 桁数)
第一引数のみを指定した場合は整数に、四捨五入されます。
第二引数には、小数点何桁まで丸めるかを指定します。
10.5の四捨五入は上手くいっていません。。。
その理由は次に説明します。
round関数を使うさいの注意
四捨五入ではなく偶数への丸め
round関数の丸めは、一般的な四捨五入ではなく、偶数への丸めになります。
端数が0.5より小さいならば切り捨てます。
端数が0.5より大きいならば切り上げます。
端数がちょうど0.5なら、切り捨てと切り上げのうち結果が偶数となる方へ丸めます。
これをコードで見ていきましょう。
結果が全て、「0」「2」 「4」「6」といった偶数になっていることがわかります。
小数点以下2桁以降の処理では、偶数への丸めも上手くいかない
小数点以下2桁以降の処理では、偶数への丸めも上手くいかない時もあります。
理由は、小数を浮動小数点数で正確に表せないからです。
Decimalを使うと問題が解決します
上記の2つの問題は、Decimalを使うと解決します。
Decimal型のオブジェクトからquantize()を呼び出します。
quantize()の第一引数に、求めたい桁数と同じ桁数の数値を入力します。
そして、引数roundingに丸めモードを指定します。
ROUND_HALF_UPを指定すると一般的な四捨五入になります。
まとめ
この記事では、Pythonで四捨五入を扱う方法を紹介しました。
業務で正確に四捨五入をしたい場合は、Decimalを使うようにしましょう。
Good luck with your engineer life!
▼ 小数点の切り上げと切り捨てが気になる人は、この記事を読んで下さい。
-
【Python入門】小数点の切り上げと切り捨て
目次1 小数点の切り上げ2 小数点の切り捨て3 まとめ 小数点の切り上げ 小数点の切り捨て まとめ この記事では、Pythonにおける「小数点の切り上げ」と「切り捨て」について紹介しました。 Good luck for your engin ...