ユーザー入力から価格を読み取ります。このように入力にintを掛けると
T=
"$((PRICE*QTY))"|bc
; 行 272: 12.00: 構文エラー: 無効な算術演算子 (エラー トークンは ".00") または .50
ユーザーの入力に応じて。これらの 2 つの変数を乗算して、小数点以下 2 桁の合計を取得するにはどうすればよいですか?
ユーザー入力から価格を読み取ります。このように入力にintを掛けると
T=
"$((PRICE*QTY))"|bc
; 行 272: 12.00: 構文エラー: 無効な算術演算子 (エラー トークンは ".00") または .50
ユーザーの入力に応じて。これらの 2 つの変数を乗算して、小数点以下 2 桁の合計を取得するにはどうすればよいですか?
これは機能します:
PRICE=1.1
QTY=21
RES=$(echo "scale=4; $PRICE*$QTY" | bc)
echo $RES
var=$(echo "scale=2;$PRICE*$QTY" |bc)
awk を使用することもできます
awk -vp=$PRICE -vq=$QTY 'BEGIN{printf "%.2f" ,p * q}'
T="$(echo "$PRICE*$QTY" | bc)"
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 つ目は、$((...))
シェルで算術演算を実行しようとする試みです。mybash
もdash
浮動小数点数も扱えません。
シェルで演算を行いたい場合は、printf(1)
(おそらく) シェルの組み込みprintf
関数に注意してください。bc で算術演算を行いたい場合は、特殊変数 に注意してくださいscale
。