![bashが期待どおりにprintfが数値を四捨五入しないのはなぜですか? [コピー]](https://linux33.com/image/225628/bash%E3%81%8C%E6%9C%9F%E5%BE%85%E3%81%A9%E3%81%8A%E3%82%8A%E3%81%ABprintf%E3%81%8C%E6%95%B0%E5%80%A4%E3%82%92%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
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
詳細については、次を参照してください。浮動小数点ガイド