На данный вопрос уже ответили:
Объясните, пожалуйста, что со мной не так, или почему результат вычислений столь странный? Здесь же даже нечего отрубать(округлять), если бы мы допустим хотели показать (1/3).
На сколько понимаю: 11.4+5.7 = 11.0+5.0 + 1.1 = 17.1
Так в школе ещё объясняли...
public class Test{
public static void main(String[] args) {
System.out.println(11.4f+5.7f);
}
}
Output:
17.099998
Подобные ошибки связанны с внутренним двоичным (binary) представлением чисел. Подобно тому, как в десятичной системе нельзя точно представить результат деления 1/3, так и в двоичной системе невозможно точно представить 1/10.
Подробнее здесь
В двух словах, числа с плавающей точкой не подходят для арифметических вычислений. Если вы хотите иметь возможность выполнять арифметические действия над дробными числами, используйте класс BigDecimal
Сборка персонального компьютера от Artline: умный выбор для современных пользователей