Добрый день. Из материала лекции: "Дело в том, что в двоичной системе невозможно точно представить число 0,1. В десятичной системе, кстати, тоже есть подобная проблема: в ней нельзя правильно представить дроби (и вместо ⅓ мы получим 0.33333333333333…, что тоже не совсем правильный результат)." Хорошо, понятно, но почему тогда при обычном умножении и сложении двух значений мы получаем один результат == 1.0, а при сложении в цикле - иной == 0.99999999999999? То есть, может логика в том, что при большем количестве операций мы получаем менее точный результат, но даже если и так, то f1 и f2 тоже должны быть != 1, ну, только если не существует какого-то автоматического Math.round() при каких-нибудь условиях...
double f1 = 0.1 + 0.9;
double f2 = 0.1 * 10;
double f3 = 0.0;
for (double i = 1; i <= 10; i++) {
    f3 = f3 + 0.1;
}
System.out.println(f1);
System.out.println(f2);
System.out.println(f3);
1.0
1.0
0.9999999999999999
Спасибо!