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
为什么在第二种情况下没有正确舍入?应该是这样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
更多详情请参阅浮点指南