Big decimal setScale дает разное значение несколько раз

#java

#java

Вопрос:

Я пытаюсь ограничить свои поля суммы до 4 десятичных знаков, используя ниже,

String val = new BigDecimal(amt).setScale(4,RoundingMode.HALF_UP).toString()

Однако это несколько раз дает противоречивый результат, в некоторых случаях я вижу, что одно и то же значение достигает 2,9719 или становится 2,9720. В чем может быть проблема

Комментарии:

1. Не могли бы вы показать пример, пожалуйста?

2. @Michu93 ЭТО происходит случайным образом только для некоторых записей, не уверен в точном шаблоне. Есть ли возможность, которая RoundingMode.HALF_UP может возвращать другое значение для одного и того же поля суммы

3. каков тип данных amt? Как это установлено?

4. Никакая часть этого кода не должна возвращать другой ответ для одного и того же ввода в разное время, но это возможно amt , отличается каким-то тонким образом.