Bash Multiplying Decimal to int
I read price from user input. When i multiply the input with int like this
T=
"$((PRICE*QTY))"|bc
; gives line 272: 12.00: syntax error: invalid arithmetic operator (error token is ".00") or .50
depending on user input. How do i multiply these two variables and get a 开发者_JS百科total with 2 decimal points?
this works:
PRICE=1.1
QTY=21
RES=$(echo "scale=4; $PRICE*$QTY" | bc)
echo $RES
var=$(echo "scale=2;$PRICE*$QTY" |bc)
You can also use awk
awk -vp=$PRICE -vq=$QTY 'BEGIN{printf "%.2f" ,p * q}'
T="$(echo "$PRICE*$QTY" | bc)"
You can use
mul=0.8
exp=200
texp=awk -vp=$mul -vq=$exp 'BEGIN{printf "%.2f" ,p * q}'
Hope this is going to work.
First, trying to do floating-point arithmetic with bc(1)
without using the -l
flag is bound to give you some funny answers:
sarnold@haig:~$ bc -q
3.5 * 3.5
12.2
sarnold@haig:~$ bc -q -l
3.5 * 3.5
12.25
Second, the $((...))
is an attempt to do arithmetic in your shell; neither my bash
nor dash
can handle floating point numbers.
If you want to do the arithmetic in your shell, note printf(1)
as well as (probably) your shell's built-in printf
function. If you want to do the arithmetic in bc, note the special variable scale
.
精彩评论