Тимофей Мартынов, простое решение написано постом ниже.
В R есть встроенная функция:
signif(56.4499999996) = 56.45
Реализацию на других языках можно загуглить, пример:
stackoverflow.com/questions/202302/rounding-to-an-arbitrary-number-of-significant-digits