14

ユーザー入力から価格を読み取ります。このように入力にintを掛けると

T= "$((PRICE*QTY))"|bc; 行 272: 12.00: 構文エラー: 無効な算術演算子 (エラー トークンは ".00") または .50

ユーザーの入力に応じて。これらの 2 つの変数を乗算して、小数点以下 2 桁の合計を取得するにはどうすればよいですか?

4

5 に答える 5

20

これは機能します:


PRICE=1.1
QTY=21
RES=$(echo "scale=4; $PRICE*$QTY" | bc)
echo $RES
于 2010-07-19T09:55:16.963 に答える
10
var=$(echo "scale=2;$PRICE*$QTY" |bc)

awk を使用することもできます

awk -vp=$PRICE -vq=$QTY 'BEGIN{printf "%.2f" ,p * q}'
于 2010-07-19T09:48:46.773 に答える
3
T="$(echo "$PRICE*$QTY" | bc)"
于 2010-07-19T09:45:23.363 に答える
1

bc(1)まず、フラグを使用せずに浮動小数点演算を実行しようとすると-l、面白い答えが得られるはずです。

sarnold@haig:~$ bc -q
3.5 * 3.5
12.2
sarnold@haig:~$ bc -q -l
3.5 * 3.5
12.25

2 つ目は、$((...))シェルで算術演算を実行しようとする試みです。mybashdash浮動小数点数も扱えません。

シェルで演算を行いたい場合は、printf(1)(おそらく) シェルの組み込みprintf関数に注意してください。bc で算術演算を行いたい場合は、特殊変数 に注意してくださいscale

于 2010-07-19T09:58:22.297 に答える