Pythonで正しく四捨五入して表示する

スポンサーリンク
スポンサーリンク

0.425 を小数第2位で四捨五入すると、0.43 ですが、Python で気をつけて表示しないと 0.42 になってしまいます。

よく説明されている format を使うと、表示結果は 0.42 になります。

v = 0.425
print( "{:.2f}".format(v) )

浮動小数点型(IEEE754単精度)では 0.425 = 4.2499998211860657e-1 となり、これを小数第2位で四捨五入すると 0.42 となります。

decimal モジュールを使うと回避できます。
quantizeの第一引数で丸める桁を指定します。
第二引数で丸め方を指定します。ROUND_HALF_UP で四捨五入です。

from decimal import *
v = 0.425
c = Decimal(str(v)).quantize( Decimal('0.01') , rounding=ROUND_HALF_UP )
print( c )

参考

Pythonで整数や小数を四捨五入する:roundよりもDecimalを使う(銀行家の丸めに注意しよう) – MathPython
decimal — 十進固定及び浮動小数点数の算術演算 — Python 3.8.2 ドキュメント
decimal — 十進固定及び浮動小数点数の算術演算 — Python 3.8.2 ドキュメント

コメント

タイトルとURLをコピーしました