上下文是有 2 个变量被划分为浮点结果像这样:
printf "%0.5f\n" $(echo 305/15 | bc -l)
20.33333
我怎样才能总是四舍五入到下一个整数即21?这并不是将 20.5 以上的值向上舍入到 21,即最近的整数。我这么问是因为我希望一个值要么恰好是整数,要么是下一个整数(如果它以任何方式位于上面)。那么我该如何评价呢?有if
声明吗?如果我放一个漂浮shell 抱怨它需要一个整数。我不完全理解如何利用问答中的信息,例如这个实现“向上”转换到下一个整数。我缺少什么吗?
答案1
您可以使用bc
以下功能:
echo "a=305; b=15; if ( a%b ) a/b+1 else a/b" | bc
答案2
尝试:
ceil() {
echo "define ceil (x) {if (x<0) {return x/1} \
else {if (scale(x)==0) {return x} \
else {return x/1 + 1 }}} ; ceil($1)" | bc
}
然后:
$ ceil 5.1
6
$ ceil 5.5
6
$ ceil 5.9
6
答案3
对于正整数:
a=305
b=15
echo $((a%b?a/b+1:a/b))
21
答案4
通过awk
并添加0.5
到结果中,然后.f
将其自动四舍五入到最接近的数字。
awk 'BEGIN{printf("%.f\n", (305/15)+0.5)}'
21
如果你想要它的地面函数,用-0.5
它代替