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
but it should be 37.8.
попробуйте что-то вроде этого
$ 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