Ниже приведена сокращенная версия вашего скрипта, исправленная для предоставления нужного вам результата:
#!/bin/bash
float=48.86
echo "You asked for $float; This is the price without taxes:"
echo "scale=3; price=$float/1.18 +.005; scale=2; price/1 " | bc
Обратите внимание, что округление до ближайшего целого эквивалентно добавлению .5 и получению или округлению (для положительных чисел).
Кроме того, коэффициент масштабирования применяется во время работы; поэтому (это команды bc, вы можете вставить их в свой терминал):
float=48.86; rate=1.18;
scale=2; p2=float/rate
scale=3; p3=float/rate
scale=4; p4=float/rate
print "Compare: ",p2, " v ", p3, " v ", p4
Compare: 41.40 v 41.406 v 41.4067
# however, scale does not affect an entered value (nor addition)
scale=0
a=.005
9/10
0
9/10+a
.005
# let's try rounding
scale=2
p2+a
41.405
p3+a
41.411
(p2+a)/1
41.40
(p3+a)/1
41.41