Это не вопрос о том, как сравнивать два объекта BigDecimal
- я знаю, что для этого вы можете использовать compareTo
вместо equals
, поскольку equals
задокументирован как:
В отличие от compareTo, этот метод считает два объекта BigDecimal равными, только если они равны по значению и масштабу (таким образом, 2,0 не равно 2,00 при сравнении с помощью этого метода).
Возникает вопрос: почему equals
был указан таким, казалось бы, нелогичным образом? То есть, почему важно различать 2,0 и 2,00?
Кажется вероятным, что для этого должна быть причина, поскольку в документации Comparable
, которая определяет метод compareTo
, говорится:
Настоятельно рекомендуется (хотя и не обязательно), чтобы естественный порядок соответствовал равенству
Я полагаю, что должна быть веская причина игнорировать эту рекомендацию.
new BigDecimal("2.0").compareTo(new BigDecimal("2.00")) == 0
- person Peter Lawrey   schedule 31.12.2012