我从用户输入中读取价格。当我像这样将输入与 int 相乘时
T=
"$((PRICE*QTY))"|bc
; 给出第 272 行:12.00:语法错误:算术运算符无效(错误标记为“.00”)或 .50
取决于用户输入。我如何将这两个变量相乘并得到 2 个小数点的总数?
我从用户输入中读取价格。当我像这样将输入与 int 相乘时
T=
"$((PRICE*QTY))"|bc
; 给出第 272 行:12.00:语法错误:算术运算符无效(错误标记为“.00”)或 .50
取决于用户输入。我如何将这两个变量相乘并得到 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
其次,$((...))
尝试在你的 shell 中进行算术运算;我的bash
也dash
不能处理浮点数。
如果你想在你的 shell 中进行算术运算,请注意printf(1)
以及(可能)你的 shell 的内置printf
函数。如果要在 bc 中进行算术运算,请注意特殊变量scale
。
您可以使用 mul=0.8 exp=200 texp=awk -vp=$mul -vq=$exp 'BEGIN{printf "%.2f" ,p * q}'
希望这会奏效。