bashが期待どおりにprintfが数値を四捨五入しないのはなぜですか? [コピー]

bashが期待どおりにprintfが数値を四捨五入しないのはなぜですか? [コピー]
prompt> printf "%.2f\n" 3.314
3.31
prompt> printf "%.2f\n" 3.315
3.32

さて、私が欲しいものを手に入れました。ただし、別の数値を使用すると、次のような結果が表示されます。

prompt> printf "%.2f\n" 28.124
28.12
prompt> printf "%.2f\n" 28.125
28.12

2番目のケースでは、なぜ正しく丸められないのですか?そうするべきで28.13はありませんか?

ベストアンサー1

printf銀行家の丸めの使用(偶数は降り、奇数は降り):

printf '%.2f\n' 28.125    # 28.12
printf '%.2f\n' 28.135    # 28.14
printf '%.2f\n' 28.145    # 28.14
printf '%.2f\n' 28.155    # 28.16

詳細については、次を参照してください。浮動小数点ガイド

おすすめ記事