Первоначально код был:
if(!Objects.equals(src.getApplicationItemCost(), dest.getApplicationItemCost())){
log.info("Difference")
}
Вывод:
getApplicationItemCost: src:0.0| dest:0
Difference
ApplicationItemCost имеет тип BigDecimal.
Если я использую compareTo
, тогда я должен явно отметьте пустые значения, например:
LOG.info("getApplicationItemCost: src:" + src.getApplicationItemCost() + "| dest:" + dest.getApplicationItemCost());
if((src.getApplicationItemCost()==null && dest.getApplicationItemCost()!=null)
|| (src.getApplicationItemCost()!=null && dest.getApplicationItemCost()==null)
|| !Objects.equals(src.getApplicationItemCost(), dest.getApplicationItemCost())
|| src.getApplicationItemCost().compareTo(dest.getApplicationItemCost())!=0 )
Любое предложение сравнить 0,0 и 0. Почему эта разница? (Может быть, в базе данных есть поле Number, а при преобразовании в большое десятичное число оно не показывает 0.0?)