10進値を次の整数値に増やします。

10進値を次の整数値に増やします。

シェルスクリプトを使用して、10進値を次の整数値に増やしたいと思います。

たとえば、

i=**1.6**     then I need to print i=**2**
i=**1.00001** then I need to print i=**2**
i=**1.00049** then also I need to print the value as i=**2**

いずれにしても、10進値が0.00000001より大きい場合は、値を2として印刷する必要があります。

ベストアンサー1

あなたの質問は少しあいまいです。小数部に関係なく次の整数が必要な場合、答えは次のようになりますsh

echo $((${i%.*} + 1))

次の整数が必要な場合(小数部が0より大きい場合)、答えは次のようになりますsh

[ -n "${i##*.*[1-9]*}" ]
echo $(( ${i%.*} + $? ))

i(最初のテストは、小数点の後にゼロ以外の数字がある場合は1で終了し、そうでない場合は0で終了します。$?終了値を含みます。)

IMHO 同じアイデアがbash読みやすくなります。

[[ "$i" != *.*[1-9]* ]]
echo $(( ${i%.*} + $? ))

POSIXを使用しているため、exprすべてのシェルと互換性があります。

expr "${i%.*}" + \( "${i##*.*[1-9]*}" = "" \)

おすすめ記事