kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
James Thomas
James Thomas
Вопрос

Разница между assertEquals(Double, Double) и assertEquals(double, double, delta)

У меня есть тест junit, утверждающий два объекта Double со следующим:

Assert.assertEquals(Double expected, Double result);

Это было нормально, затем я решил изменить его, чтобы использовать примитив double вместо него, который, как оказалось, устарел, если вы также не предоставляете дельту.

Поэтому мне интересно, в чем разница между использованием объекта Double или примитивного типа в этом assertEquals? Почему использование объектов без дельты нормально, а использование примитивов без дельты устарело? Делает ли Java что-то в фоновом режиме, что уже учитывает значение дельты по умолчанию?

Спасибо.

11 2012-06-28T10:02:26+00:00 3
Péter Török
Péter Török
Редактировал вопрос 28-го июня 2012 в 8:55
Программирование
unit-testing
java
junit
Этот вопрос имеет 1 ответ на английском, чтобы прочитать их войдите в свой аккаунт.
Louis Wasserman
Louis Wasserman
28-го июня 2012 в 10:06
2012-06-28T10:06:19+00:00
Дополнительно
Источник
Редактировать
#16552893

Двойная математика редко, если вообще когда-либо, дает точно одинаковые результаты. Например, 0.1 * 0.1 != 0.01. Обычно при сравнении результатов двойной точности требуется хотя бы некоторая дельта.

С другой стороны, если вы сравниваете квадратные Double, предполагается, что вам нужно точное равенство. В Java не учитывается значение дельты по умолчанию, но Double.equals имеет несколько иное поведение, чем ==: в частности, его обработка NaNs.

Это имеет смысл при тестировании, потому что Double.NaN != Double.NaN, но в тесте, если вы ожидали NaN и было возвращено NaN, это будет правильным ответом.

5
0
 Akhi
Akhi
28-го июня 2012 в 10:05
2012-06-28T10:05:16+00:00
Дополнительно
Источник
Редактировать
#16552886

ИСТОЧНИК. Утверждает, что два двойных или плавающих числа равны с точностью до положительной дельты. Если это не так, выдается AssertionError. Если ожидаемое значение равно бесконечности, то значение дельты игнорируется. NaN считаются равными.

0
0
 duffymo
duffymo
28-го июня 2012 в 10:05
2012-06-28T10:05:48+00:00
Дополнительно
Источник
Редактировать
#16552890

Я бы сказал, что сравнение парных чисел, примитивных или объектных, бесполезно без дельты. Знание того, как работают числа с плавающей точкой, является ключом к выполнению числовых операций.

Объект может использовать .equals под прикрытием; у примитива нет другого варианта, кроме ==.

То, что объектная версия не использует дельту, не делает ее лучшей идеей.

0
0
Похожие сообщества 12
pro.jvm
pro.jvm
5 814 пользователей
Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Открыть telegram
learn.java
learn.java
5 375 пользователей
Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat
Открыть telegram
Java & Co
Java & Co
4 434 пользователей
Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/179171 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude
Открыть telegram
pro.JVM Jobs Chat
pro.JVM Jobs Chat
2 564 пользователей
Чат для обсуждения вакансий на JVM языках. Правила: - Никакого спама - Никакого троллинга и оскорблений участников - Размещение вакансий только через канал Канал для вакансий: @jvmjobs Основной чат: @jvmchat Наши друзья: @scala_jobs, @scala_jobs_feed
Открыть telegram
Java/Kotlin and more
Java/Kotlin and more
2 063 пользователей
чат о Java/Kotlin и связанных технологиях. We're discussing: job, tech questions etc. languages: russian, java, eng, kotlin Ссылка на чат: t.me/springframeworkio
Открыть telegram
Java Underground
Java Underground
1 751 пользователей
Библиотека по Java https://t.me/javalib Наше сообщество ВК: https://vk.com/javatutorial Вакансии и резюме свои строго в этот канал: https://t.me/job_java
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 6 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
JA
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией