浮動小数点数を、最も近い整数ではなく、次の整数に変換しますか?

浮動小数点数を、最も近い整数ではなく、次の整数に変換しますか?

文脈は、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代わりに使用

関連情報