
文脈は、2つの変数が分割されるということです浮動小数点結果は次のようになります:
printf "%0.5f\n" $(echo 305/15 | bc -l)
20.33333
常に切り上げを行うにはどうすればいいですか?次整数すなわち21これは20.5を超える値を21に切り上げることではありません。最も近い整数です。私が質問しているのは、値がその整数そのものか、あるいはその次の整数で、その値が何らかの形で上回っているかのどちらかであることを知りたいからです。では、それをどのように評価すればよいのでしょうか?ステートメントを使ってif
?浮くシェルは整数を期待していると文句を言います。Q&Aのような情報をどのように活用すればよいのかよくわかりません。これです次の整数への「上向き」変換を実行します。何か見落としているのでしょうか?
答え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
代わりに使用