Двойная математика редко, если когда-либо дает ровно равные результаты. Например, 0.1 * 0.1 != 0.01
. Для сравнения результатов двойной точности обычно требуется, по крайней мере, несколько дельта.
С другой стороны, если вы сравниваете бокс Double
s, предполагается, что вы хотите получить точное равенство. У меня нет значения дельта-значения по умолчанию, но Double.equals
имеет немного отличающееся поведение от ==
: в частности, его обработка NaNs .
Это имеет смысл при тестировании, потому что Double.NaN != Double.NaN
, но в тесте, если вы ожидали возвращения NaN
и NaN
, это правильный ответ.