Я знаю, что Double
является классом-оболочкой, и он обертывает номер Double
. Сегодня я видел еще одно главное отличие:
double a = 1.0;
double b = 1.0;
Double c = 1.0;
Double d = 1.0;
System.out.println(a == b); // true
System.out.println(c == d); // false
Так странно со мной!!!
Итак, если мы используем Double
, каждый раз мы должны сделать что-то вроде этого:
private static final double delta = 0.0001;
System.out.println(Math.abs(c-d) < delta);
Я не могу объяснить, почему Double делают прямое сравнение неправильным. Пожалуйста, объясните мне.
Спасибо:)