Почему в двух примерах при подсчете среднего наблюдается ошибка? Java

Пример взят из книги Герберт Шилдт. Java 8. Полное руководство. Девятое издание. 2015. на странице 701. сам код

    import java.util.*;
public class AvgNums {
    public static void main(String[] args) {
        Scanner conin = new Scanner (System.in);
        
        int count = 0;
        double sum = 0.0;
        
        System.out.println("Введите числа для подсчета среднего.");
        
        // читать и суммировать числовые значения
        while (conin.hasNext()) {
            if (conin.hasNextDouble()) {
                sum += conin.nextDouble();
                count++;
            }
            else {
                String str = conin.next();
                if (str.equals("=")) break;
                else {
                    System.out.println("Ошибка формата данных.");
                    return;
                }
            }
        }
        conin.close();
        System.out.println("Сумма " + sum + "\nКоличество " + count);
        System.out.println("Среднее равно " + sum / count);
    }
}

если подсчитать в примере числа 1,3 1 1 - получится что среднее равно 1.0999999999999999. Такое же среднее и для 1,6 1 1 1 1 1 - 1.0999999999999999. ДЛя прочих примеров все точно. Так же если ввести числа для подсчета среднего: 1,1 1,1 1,1 Сумма 3.3000000000000003 Количество 3 Среднее равно 1.1

Как происходят преобразования при которых только некоторые примеры имеют погрешности? (про периодические числа и перевод из десятичной системы в двоичную прочитал, но не ясно почему ошибка только для некоторых примеров)


Ответы (0 шт):