我想评估表达式并将输出正确显示到3个小数位,我尝试使用下面的代码,但它不起作用帮助我在bash中如何做到这一点。
echo -e "Enter expression to calculate : \c"
read num
let a=num
printf '%f\n' "$a"
Input : 5+50*3/20 + (19*2)/7
Output : 17.000000
Desired Output : 17.929
答案 0 :(得分:3)
使用bc
:
echo 'scale=3; 5+50*3/20 + (19*2)/7' | bc -l
输出:
17.928
答案 1 :(得分:2)
而不是let a=num
,例如:
echo $num | bc
17.92857142857142857142
答案 2 :(得分:1)
这是非常罕见的情况之一,让shell变量扩展成为awk脚本正文的一部分是可以接受的:
$ num='5+50*3/20 + (19*2)/7'
$ awk 'BEGIN{print '"$num"'}'
17.9286
$ awk 'BEGIN{printf "%0.3f\n", '"$num"'}'
17.929