浮動小数点数を最も近い整数の代わりに次の整数に変換しますか?

浮動小数点数を最も近い整数の代わりに次の整数に変換しますか?

文脈は、2つの変数が次のように分かれているということです。浮動小数点結果は次のとおりです。

printf "%0.5f\n" $(echo 305/15 | bc -l)
20.33333

どのように常に丸めることができますか?Next整数は20日?これは、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を使用してください

関連情報