Оптимизировать код для округления BigDecimal числа

1

У меня есть сценарий, когда я получаю сумму в виде строки, и мне нужно ее округлить и отправить как строку, что я сделал:

public static String roundOff(String pfEmpWithoutRoundOff) {
        try {

            BigDecimal bigDecimal = new BigDecimal(pfEmpWithoutRoundOff);
            int value = bigDecimal.intValue();
            int length = String.valueOf(value).length();
            BigDecimal rounded = bigDecimal.round(new MathContext(length, RoundingMode.HALF_UP));
            return String.valueOf(rounded);
        }
        catch(ArithmeticException e)
        {
            e.printStackTrace();
        }
        return null;

    }

Хорошо, я могу оптимизировать код. У меня есть 5 строк, и я могу сделать это 2-3 строки.

  • 0
    может принадлежать codereview.stackexchange.com
  • 0
    Я думал, если кто-то может помочь мне здесь
Показать ещё 2 комментария
Теги:
bigdecimal

2 ответа

1
Лучший ответ

Ты имеешь ввиду:

return new BigDecimal(pfEmpWithoutRoundOff).setScale(0, RoundingMode.HALF_UP).toString();

?

  • 0
    Как использовать setScale (), если они имеют разный масштаб для другой входной строки?
  • 0
    Я не понимаю, что вы имеете в виду. Можете ли вы дать мне несколько примеров, какой результат вы ожидаете для какого входа?
Показать ещё 1 комментарий
1

Попробуйте это (если хотите), у него есть только 2 строки для округления String:

public static String roundOff(String pfEmpWithoutRoundOff) {
    Long roundVal = Math.round(Double.valueOf(pfEmpWithoutRoundOff));
    return roundVal.toString();
}
  • 0
    Я не хочу рисковать с длинными или двойными я хочу BigDecimal
  • 0
    затем используйте new BigDecimal(pfEmpWithoutRoundOff).setScale(0, RoundingMode.HALF_UP) как предложено Майклом.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню