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