Я инициализирую двойной массив:
double [] foo = new double[n];
Я понимаю, что спецификация java-языка приводит к инициализации всех значений в массиве до нуля.
Когда я просматриваю свой алгоритм, некоторые из элементов массива получают положительное значение.
Итак, чтобы проверить, имеет ли конкретный элемент ненулевое значение, безопасно ли просто использовать
if (foo[i] > 0.0)
или я должен использовать epsilon. Или аналогично, если я хочу знать, не установлено ли значение, могу ли я использовать ==
, учитывая, что нули не были вычисленными значениями, но исходными инициализированными нулями? Обычно, конечно, я бы никогда не использовал ==
для сравнения чисел с плавающей запятой, но мне интересно, является ли это особым случаем?
Спасибо!
Рассмотрим этот код
public static void main(String[] args) {
double [] foo = new double[10];
foo[5] = 10; // Sets the sixth element to 10
for (int i = 0; i < foo.length; i++) {
double val = foo[i];
if (val != 0) {
System.out.printf("foo[%d] = %f\n", i, val);
}
}
}
Он выводит
foo[5] = 10.000000
== 0.0
поэтому этого должно быть достаточно для проверки != 0.0
Невозможно использовать
if (foo[i] > 0.0)
==
для сравнения double
с нулем, если целью является проверка именно на ноль.