2743410360.320のような値を取得し、変数に2743410360のような値を求めます。
頑張った
INTValueOfGB=$ echo "($gb+0.5)/1" | bc
しかし、ますます多くなります。 (standard_in) 1: syntax error
答え1
printf
丸めに使用できます。
$ printf "%.0f" 2743410360.320
答え2
@vinの質問に対する回答は表示されません。
しかし、ますます多くなります。
(standard_in) 1: syntax error
このbc
コマンドは、(standard_in) 1: syntax error
シェル変数がgb
設定されていないため印刷されます。
$ unset gb
$ echo "($gb+0.5)/1" | bc
(standard_in) 1: syntax error
$ gb=2743410360.320
$ echo "($gb+0.5)/1" | bc
2743410360
@dchirikovの答えに対するコメントで、@vinはprintf "%.0f"
「動作しません」と言いました。
$ unset gb
$ printf '%.0f\n' $gb
0
$ gb=2743410360.320
$ printf '%.0f\n' $gb
2743410360
@vinに問題がある両方の領域で設定されていない変数が問題を再現して変数を設定すると、問題は解決しました。
答え3
$ p=2743410360.320
$ echo $p
2743410360.320
$ echo ${p%%.*}
2743410360
答え4
コマンドにはいくつか必要です( )
。
INTValueOfGB=$( echo "($gb+0.5)/1" | bc )
ただし、これを行うと数値が丸められないため、目盛をゼロに設定する必要があります。
INTValueOfGB=$( echo "scale=0;($gb+0.5)/1" | bc )
すると(x.5から)次の整数に丸められます。
「次の偶数に丸める」(バンカーの規則)には、printf丸めを使用する必要があります。
LC_NUMERIC=C printf "%.0f" 2743410360.320
LC_NUMERICは、数値が小数点単位で処理されるようにするために使用されます。これはドイツのユーザーが使用したいものではなく、小数点以下の桁数でも機能します,
。
$ LC_NUMERIC=de_DE.utf8 printf "%.0f" 2743410360,320
2743410360