プログラミング、フリーダイビング、旅行のブログ

プログラミング道場

【Python3入門】四捨五入しよう

更新日:

この記事では、Pythonで四捨五入を扱う方法を紹介します。

本記事の内容

  • round関数の使い方
  • round関数を使うさいの注意
  • Decimalを使うと問題が解決します
  • まとめ

round関数の使い方

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 for your engineer life!

この記事が面白かった人は、こちらの記事も読んでみて下さい。

-Python, プログラミング

Copyright© プログラミング道場 , 2019 All Rights Reserved Powered by AFFINGER4.