This question already has answers here:
Rounding Numbers with bc in Bash
(3个答案)
三年前关闭。
我使用bc和scale来计算表达式,但是我希望它向上取整而不是向下取整。最简单的方法是什么?
$ read exp
5+50*3/20 + (19*2)/7
$ echo "scale=3; $exp" | bc -l
17.928

然而,我想要的答案是17.929
我宁愿把答案作为我答案的补充,而不是另一个理由。谢谢
以下是我尝试过的一些事情:
$ echo "scale=4; ($exp+0.0005)" | bc -l
17.9290
$ echo "scale=3; ($exp+0.0005)" | bc -l
17.9285

然而,我希望17.929作为最后没有零的答案。

最佳答案

通过使用scaling factorprintf作为3scaling factorbc作为4并将0.0005添加到表达式中来解决:

printf "%.3f\n"  $( echo "scale=4; $exp+0.0005" | bc -l )

关于bash - 将bc比例向上取整,而不是用scale或printf向下取整,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37403950/

10-10 11:14