Bash将Decimal乘以int

时间:2010-07-19 09:41:30

标签: bash decimal multiplication

我从用户输入中读取价格。当我将输入与int相乘时如此

  

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

取决于用户输入。如何将这两个变量相乘并得到总共2个小数点?

5 个答案:

答案 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中进行算术运算;我的bashdash都无法处理浮点数。

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