Я хочу преобразовать 1256.3648 в 126.36 (до 2 знаков после запятой)
Чтобы реализовать эту вещь, я использую .setScale(2, BigDecimal.ROUND_HALF_UP));
Но по некоторым причинам он не работает
Есть идеи?
Вот тестовая программа, демонстрирующая округление:
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
BigDecimal x = new BigDecimal("1256.3648");
BigDecimal y = x.setScale(2,BigDecimal.ROUND_HALF_UP);
System.out.println(x);
System.out.println(y);
}
}
Он выводит:
1256.3648
1256.36
x
не изменяется, но результат вызова setScale
правильно округлен.
Вы можете сделать это таким образом
.setScale(2, RoundingMode.FLOOR);
Предполагая, что вы вызываете его на объект BigDecimal
будет о/р
1256,36
Если ваш вход - 1256.3648
Запомнить,
java.math.BigDecimal.setScale(int newScale, RoundingMode roundingMode)
возвращаетBigDecimal
, масштаб которого является указанным значением, а его немасштабированное значение определяется умножением или делением этого значения без масштабирования BigDecimal на соответствующую мощность 10 для поддержания его общего значения.
126.3648
? ТакжеBigDecimal
является неизменным типом ...