$ x=49.765
$ printf "%.2f" $(echo "$x + 0.005" | bc)
Você tem que usar comandos externos porque não há recurso de arredondamento embutido em printf(1)
, e o shell POSIX não possui aritmética de ponto flutuante embutida.
Para arredondar para o dígito decimal mais próximo, você adiciona 0,5 e trunca. Para arredondar para o décimo mais próximo, você divide o "fator de deslocamento" por 10 e assim por diante.
Esta falta de recursos embutidos é o que muitas vezes leva as pessoas a usar algo como Perl ao invés de shell:
$ perl -e 'printf "%.2f", 49.765 + 0.005'
Mesma coisa, mas tudo tratado por um único processo.