Что я могу сделать, чтобы изменить значение ".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
Другие вопросы по тегам