РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
635 of 1163 menu

Метод setScale

Метод setScale класса BigDecimal устанавливает масштаб числа и возвращает новый объект BigDecimal. Масштаб - это количество знаков после десятичной точки. В первый параметр мы передаем целое число - новый масштаб. Вторым необязательным параметром мы передаем режим округления RoundingMode, который определяет, как округлять число, если при изменении масштаба приходится отбрасывать знаки. Если второй параметр не указан, а округление необходимо, метод выбрасывает исключение ArithmeticException. Исходный объект при этом не изменяется, так как BigDecimal является неизменяемым классом.

Синтаксис

bigDecimal.setScale(newScale) bigDecimal.setScale(newScale, roundingMode)

Пример

Давайте уменьшим масштаб числа до 2 с округлением по правилу HALF_UP (обычное математическое округление):

import java.math.BigDecimal; import java.math.RoundingMode; public class Main { public static void main(String[] args) { BigDecimal num = new BigDecimal("123.456"); BigDecimal res = num.setScale(2, RoundingMode.HALF_UP); System.out.println(res); } }

Результат выполнения кода:

123.46

Пример

Давайте увеличим масштаб числа до 4. В этом случае число дополняется нулями, и режим округления не требуется:

import java.math.BigDecimal; public class Main { public static void main(String[] args) { BigDecimal num = new BigDecimal("123.45"); BigDecimal res = num.setScale(4); System.out.println(res); } }

Результат выполнения кода:

123.4500

Пример

Если округление необходимо, а режим не указан, метод выбросит исключение. Давайте убедимся в этом:

import java.math.BigDecimal; public class Main { public static void main(String[] args) { BigDecimal num = new BigDecimal("123.456"); BigDecimal res = num.setScale(2); System.out.println(res); } }

Результат выполнения кода:

Exception in thread "main" java.lang.ArithmeticException: Rounding necessary

Пример

Давайте получим масштаб числа с помощью метода scale и изменим его на 0 с округлением вниз:

import java.math.BigDecimal; import java.math.RoundingMode; public class Main { public static void main(String[] args) { BigDecimal num = new BigDecimal("123.456"); System.out.println(num.scale()); BigDecimal res = num.setScale(0, RoundingMode.DOWN); System.out.println(res); } }

Результат выполнения кода:

3 123

Смотрите также

  • метод scale,
    который возвращает текущий масштаб числа
  • метод precision,
    который возвращает количество значащих цифр
  • класс RoundingMode,
    который задает режимы округления
  • метод stripTrailingZeros,
    который убирает незначащие нули в конце
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить