Мне кажется, я вижу проблему.
10.8601 нельзя изобразить идеально, и поэтому, пока округление до 13575.125 работает нормально, трудно довести его до округления до .13, потому что добавление 0,005 просто не совсем подходит. И что еще хуже, 0,005 также не имеет точного представления, так что вы в итоге немного не дотянете до 0,13.
Затем вы можете либо округлить дважды, от одного до трех цифр, а затем от одного до 2, либо сделать лучший расчет для начала. Используя длинный или высокоточный формат, масштабируйте до 1000, чтобы получить от *. 125 до * 125. Выполните округление, используя точные целые числа.
Кстати, не совсем правильно говорить, что одно из бесконечно повторяющихся изменений «с плавающей запятой неточно» или что оно всегда приводит к ошибкам. Проблема в том, что формат может представлять только дроби, которые вы можете суммировать отрицательные степени двух, чтобы создать. Таким образом, из последовательности от 0,01 до 0,99 только .25, .50 и .75 имеют точные представления. Следовательно, по иронии судьбы, лучше всего использовать FP, если его масштабировать так, чтобы использовались только целочисленные значения, тогда он такой же точный, как и целочисленная арифметика типов данных. Конечно, тогда вы могли бы просто использовать целые числа с фиксированной точкой для начала.
Будьте осторожны, масштабирование, скажем, от 0,37 до 37 все еще не является точным, если не округлить. С плавающей точкой можно использовать для денежной оценки, но это больше работы, чем стоит, и, как правило, необходимые знания отсутствуют.