web-dev-qa-db-ja.com

「.33」の値を「0.33」に変更するにはどうすればよいですか?

値を0と比較したいのですが、0より小さいことがわかります。

solution=`echo $a / $b | bc -l`

この問題は、「a」が「b」より小さい場合にのみ発生します。

5
cipri

bcは、先行ゼロを出力しません。出力をパイピングすることで印刷できます

awk '{printf "%0.2f", $1}'

要約する:

solution=$(echo 1 / 3 | bc -l | awk '{printf "%0.2f", $1}')
echo $solution
4
Jos
a=1
b=3
printf -v solution "%.2f" $(bc -l <<< "$a / $b")
echo $solution

出力:

 0.33 

$ aと$ bが常に整数であり、2つの整数を分割するbashのみのソリューションを探している場合: this に興味があるかもしれません。

5
Cyrus

printfの場合:

$ printf '%f' $(echo $a / $b | bc -l)
0.200000

小数点以下1桁のみが必要な場合:

$ printf '%.1f' $(echo $a / $b | bc -l)
0.2
3
chaos

Perlを使用して先行ゼロを取得することもできます。

$ echo 1 / 3 | bc -l | Perl -ne 'printf"%0.2f\n",$_'
0.33
1
Sylvain Pineau

または、Perlのみを使用できます。

$ export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});'
0.33

そしてあなたのスクリプトのために:

solution=$(export a=1 b=3; Perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});')
echo "$solution"
1
A.B.