Эффект точности BigDecimal для результата деления - PullRequest
0 голосов
/ 21 апреля 2020

Я исправляю ошибки устаревшего кода, как указано SonarQube, и возникла такая ситуация.

BigDecimal amountBig=  new BigDecimal(settlementReportBean.getAmount(), MathContext.DECIMAL64)
.divide(new BigDecimal(merchantSettlementMaxValue, MathContext.DECIMAL64));

Видите ли, SonarQube предлагает использовать BigDecimal.valueOf () вместо объявления новых объектов. Итак, вот мой фиксированный код.

BigDecimal amountBig= BigDecimal.valueOf(settlementReportBean.getAmount())
.divide(BigDecimal.valueOf(merchantSettlementMaxValue), MathContext.DECIMAL64); 

Как видите, я удалил Mathcontext из дивиденда в разделительной линии. Это повлияет на поведение кода?

JavaDo c определяет следующее.

Возвращает BigDecimal со значением (this / divisor) с округлением в соответствии с настройками контекста.

Надеюсь, мой код выполняет свою работу соответствующим образом, но я чувствовал, что проверяю людей, которые столкнулись бы с такой ситуацией.

...