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 ドキュメント

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

なるほど(納得、参考になった、ヘー)

この記事へのコメント