🧠 Почему BigDecimal считает 2.0 и 2.00 разными
🧠 Почему BigDecimal считает 2.0 и 2.00 разными Что выведут эти две строки? var a = new BigDecimal("2.0"); var b = new BigDecimal("2.00"); System.out.println(a.equals(b)); System.out.println(a.compareTo(b)); true и 0 false и 0 false и -1 👇 Правильный ответ: false и 0. equals() сравнивает и числовое значение, и scale: у 2.0 он равен 1, у 2.00 — 2. А compareTo() сравнивает значения, поэтому возвращает 0. Когда проверяете равенство сумм по величине, нужен compareTo() == 0. Но ключи HashMap и элементы HashSet используют equals() и hashCode(): эти объекты останутся разными. 🔗 Источник ══════ Навигация ══════ Вакансии • Задачи • Собесы Java Библиотека | Мы в Телеграм