Решение Kerrek SB верное. Но вы можете сделать это быстрее без какого-либо цикла (или меньше циклов). Просто умножьте часть дроби на 10precision. Уменьшение числа или умножений также уменьшает кумулятивную ошибку, если вы выполняете математику с типом с плавающей точкой. Для точного преобразования вам нужно использовать тип с плавающей запятой с более высокой точностью.
Например, вы хотите преобразовать 0.1234567 с 5 цифрами точности, умножить число на 10000 и получить int-часть. Если требуется округление, умножьте его на 100000 и округлите последнее число
Полученное сообщение об ошибке связано с тем, что где-то в вашей кодовой базе вы используете ResourceBundleMessageSource
в качестве типа. Вероятно, в классе, который имеет поле этого типа.
Вместо использования конкретного типа ResourceBundleMessageSource
вы должны использовать общий интерфейс MessageSource
. Таким образом, не имеет значения, какую реализацию вы выберете.