Bash在除法时返回值4
而不是。并且在执行时返回而不是。4.2
21/5
36
9 * (21/5)
37.8
echo "$(( 21/5 ))"
4
echo "21/5" | bc
4
同样9 * ( 21/5 )
返回36
但它应该是37.8
;
y = 9;
num_lines = 21;
w = 5;
let value="$y * ($num_lines/$w)"
echo $value
36
答案1
尝试类似
$ echo "21/5" | bc -l
4.20000000000000000000
$ echo "$y * ($num_lines/$w)" |bc -l
37.80000000000000000000
设置小数点限制的方法如下,小数点后 2 位
$echo "scale=2; $y * ($num_lines/$w)" | bc -l
37.80
对于小数点后 3 位,只需改变刻度数字。
$ echo "scale=3; $y * ($num_lines/$w)" | bc -l
37.800