2016-05-17 4 views
2

Я хотел бы получить два десятичных знака после запятой в этом выражении: 7/2раунд 2 знаков после запятой Sh

#temperature equal 7 
tempeture= `cat temperature` 
rate= expr $temperature/2 
echo "$rate" 

Я получаю 3 и я хочу 3,50. thks

+0

Можете ли вы объяснить немного больше? –

ответ

1

Один способ округлить до двух decimails будет использовать bc и значение scale, равное 2:

echo "scale=2; ($temperature/2)" | bc 

Вы также можете использовать printf так:

printf "%.2f" $(($temperature/2)) 
+0

Вам нужно добавить параметр -l в вызов bc, иначе он будет работать только с целыми числами – PerroVerd

+0

@PerroVerd - Кажется, он работает нормально без него? – Cyclonecode

1

Вы можете также использовать printf «s спецификатор типа:

$ temperature=7 
$ echo "$temperature/2" | bc -l 
3.50000000000000000000 
$ printf "%.2f\n" $(echo "$temperature/2" | bc -l) 
3.50 
Смежные вопросы