Я хотел бы получить два десятичных знака после запятой в этом выражении: 7/2раунд 2 знаков после запятой Sh
#temperature equal 7
tempeture= `cat temperature`
rate= expr $temperature/2
echo "$rate"
Я получаю 3 и я хочу 3,50. thks
Я хотел бы получить два десятичных знака после запятой в этом выражении: 7/2раунд 2 знаков после запятой Sh
#temperature equal 7
tempeture= `cat temperature`
rate= expr $temperature/2
echo "$rate"
Я получаю 3 и я хочу 3,50. thks
Один способ округлить до двух decimails будет использовать bc
и значение scale
, равное 2:
echo "scale=2; ($temperature/2)" | bc
Вы также можете использовать printf
так:
printf "%.2f" $(($temperature/2))
Вам нужно добавить параметр -l в вызов bc, иначе он будет работать только с целыми числами – PerroVerd
@PerroVerd - Кажется, он работает нормально без него? – Cyclonecode
Этот вопрос уже задан и дан ответ.
См: https://askubuntu.com/questions/179898/how-to-round-decimals-using-bc-in-bash
Баш круглая функция:
round()
{
echo $(printf %.$2f $(echo "scale=$2;(((10^$2)*$1)+0.5)/(10^$2)" | bc))
};
Вы можете также использовать printf
«s спецификатор типа:
$ temperature=7
$ echo "$temperature/2" | bc -l
3.50000000000000000000
$ printf "%.2f\n" $(echo "$temperature/2" | bc -l)
3.50
Можете ли вы объяснить немного больше? –