14

我从用户输入中读取价格。当我像这样将输入与 int 相乘时

T= "$((PRICE*QTY))"|bc; 给出第 272 行:12.00:语法错误:算术运算符无效(错误标记为“.00”)或 .50

取决于用户输入。我如何将这两个变量相乘并得到 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

其次,$((...))尝试在你的 shell 中进行算术运算;我的bashdash不能处理浮点数。

如果你想在你的 shell 中进行算术运算,请注意printf(1)以及(可能)你的 shell 的内置printf函数。如果要在 bc 中进行算术运算,请注意特殊变量scale

于 2010-07-19T09:58:22.297 回答
1

您可以使用 mul=0.8 exp=200 texp=awk -vp=$mul -vq=$exp 'BEGIN{printf "%.2f" ,p * q}'

希望这会奏效。

于 2018-04-27T04:57:05.457 回答