Что я могу сделать, чтобы изменить значение ".33" на "0,33"?
Я хочу сравнить значение с 0, и оно говорит мне, что оно меньше 0. Я использовал
solution=`echo $a / $b | bc -l`
Эта проблема возникает только тогда, когда "а" меньше, чем "б".
5 ответов
Решение
bc
не будет печатать ведущий ноль. Вы можете распечатать вывод, отправив его на
awk '{printf "%0.2f", $1}'
Подвести итоги:
solution=$(echo 1 / 3 | bc -l | awk '{printf "%0.2f", $1}')
echo $solution
a=1
b=3
printf -v solution "%.2f" $(bc -l <<< "$a / $b")
echo $solution
Выход:
0,33
Если $a и $b всегда являются целыми числами и вы ищете решение bash only, чтобы разделить два целых числа: тогда вас это может заинтересовать.
С printf
:
$ printf '%f' $(echo $a / $b | bc -l)
0.200000
Если вы хотите только 1 позицию после десятичной точки:
$ printf '%.1f' $(echo $a / $b | bc -l)
0.2
Или вы можете использовать только Perl:
$ export a=1 b=3; perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});'
0.33
и для вашего сценария:
solution=$(export a=1 b=3; perl -e 'printf("'%.2f'\n", $ENV{a}/$ENV{b});')
echo "$solution"
Вы также можете получить ведущий ноль, используя perl
:
$ echo 1 / 3 | bc -l | perl -ne 'printf"%0.2f\n",$_'
0.33