Здравствуйте, я сначала складываю все значения массива, далее сумму делю их на количество элементов, нахожу общее арифметическое.
Далее я из каждого элемента массива вычитаю общее арифметическое, а потом складываю значения.
В результате я получаю отрицательный 0, а при выводе в консоль вообще значение становится -2.6645352591003757E-15.
В интернете нашел метод Double.compare(), преобразующий отрицательный 0 в положительный, и тогда в консоль выводит нормальный ноль.
Вот у меня вопрос, почему при сложении получаю -0, а вывод -2.6645352591003757E-15.
Проанализировал дебаг, и у меня есть подозрение, что происходит это потому, что в double возвращается значение с запятой, а не с точкой.
Проясните, пожалуйста, ситуацию. Как правильно складывать и выводить double?
public class Main {
public static void main(String[] args) {
double[] numbers = new double[] {2, 9, 4, 11, (-5), 7};
double sumArray = 0;
for (int i = 0; i < (double) numbers.length; i++) {
sumArray += numbers[i];
}
System.out.println("Сумма всех чисел " + sumArray);
double delArray = sumArray / (double) numbers.length;
System.out.println("Общий делитель " + delArray);
for (int i = 0; i < numbers.length; i++) {
numbers[i] = numbers[i] - delArray;
}
double result = 0.0;
for (int i = 0; i < numbers.length; i++) {
result = result + numbers[i];
}
System.out.println(result);
System.out.println(Double.compare(result, result));
}
}