我从用户输入中读取价格。当我将输入与int相乘时如此
T =
"$((PRICE*QTY))"|bc
;给 第272行:12.00:语法错误:算术运算符无效(错误标记为“.00”) 或.50
取决于用户输入。如何将这两个变量相乘并得到总共2个小数点?
答案 0 :(得分:15)
这有效:
PRICE=1.1
QTY=21
RES=$(echo "scale=4; $PRICE*$QTY" | bc)
echo $RES
答案 1 :(得分:5)
var=$(echo "scale=2;$PRICE*$QTY" |bc)
您也可以使用awk
awk -vp=$PRICE -vq=$QTY 'BEGIN{printf "%.2f" ,p * q}'
答案 2 :(得分:3)
T="$(echo "$PRICE*$QTY" | bc)"
答案 3 :(得分:1)
你可以使用
MUL = 0.8
EXP = 200
TEXP = awk -vp=$mul -vq=$exp 'BEGIN{printf "%.2f" ,p * q}'
希望这会起作用。
答案 4 :(得分:0)
首先,尝试使用bc(1)
进行浮点运算而不使用-l
标志一定会给你一些有趣的答案:
sarnold@haig:~$ bc -q
3.5 * 3.5
12.2
sarnold@haig:~$ bc -q -l
3.5 * 3.5
12.25
其次,$((...))
是尝试在shell中进行算术运算;我的bash
和dash
都无法处理浮点数。
如果你想在你的shell中进行算术运算,请注意printf(1)
以及(可能)shell的内置printf
函数。如果要在bc中进行算术运算,请注意特殊变量scale
。