$ x=49.765
$ printf "%.2f" $(echo "$x + 0.005" | bc)
Вы должны использовать внешние команды, потому что в printf (1)
нет встроенной функции округления, а оболочка POSIX не не имеют встроенной арифметики с плавающей запятой.
Чтобы округлить до ближайшей десятичной цифры, нужно прибавить 0,5 и выполнить усечение. Чтобы округлить до ближайшей десятой, нужно разделить «фактор подталкивания» на 10 и так далее.
Отсутствие встроенных средств часто подталкивает людей к использованию чего-то вроде Perl, а не оболочки:
$ perl -e 'printf "%.2f", 49.765 + 0.005'
То же самое, но все обрабатывается одним процессом.