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

Класс BigDecimal

Класс BigDecimal из пакета java.math предназначен для точных вычислений с десятичными числами произвольной длины. В отличие от типов double и float, которые хранят числа в двоичном формате с плавающей точкой и могут давать погрешность, BigDecimal хранит число в виде целого значения (unscaled value) и масштаба (scale). Масштаб определяет количество цифр после десятичной точки. Первым параметром конструктор принимает строковое или числовое представление числа, вторым (необязательным) - масштаб. Класс является неизменяемым (immutable), поэтому все арифметические операции возвращают новый объект BigDecimal, а исходный объект не изменяется.

Синтаксис

BigDecimal num = new BigDecimal("123.45"); BigDecimal num2 = new BigDecimal("123.45", MathContext.DECIMAL128);

Пример

Давайте создадим объект BigDecimal из строки и выведем его значение на экран:

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

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

"123.45"

Пример

Давайте сложим два числа с плавающей точкой через BigDecimal и через double, чтобы увидеть разницу в точности:

import java.math.BigDecimal; public class Main { public static void main(String[] args) { double a = 0.1; double b = 0.2; System.out.println(a + b); BigDecimal c = new BigDecimal("0.1"); BigDecimal d = new BigDecimal("0.2"); System.out.println(c.add(d)); } }

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

0.30000000000000004 "0.3"

Пример

Давайте перемножим два числа и получим точный результат с помощью метода multiply:

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

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

"246.90"

Пример

Давайте разделим одно число на другое с указанием масштаба и режима округления:

import java.math.BigDecimal; import java.math.RoundingMode; public class Main { public static void main(String[] args) { BigDecimal a = new BigDecimal("10"); BigDecimal b = new BigDecimal("3"); BigDecimal res = a.divide(b, 5, RoundingMode.HALF_UP); System.out.println(res); } }

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

"3.33333"

Пример

Давайте сравним два объекта BigDecimal с помощью метода compareTo:

import java.math.BigDecimal; public class Main { public static void main(String[] args) { BigDecimal a = new BigDecimal("123.45"); BigDecimal b = new BigDecimal("123.45"); BigDecimal c = new BigDecimal("100.00"); System.out.println(a.compareTo(b)); System.out.println(a.compareTo(c)); System.out.println(c.compareTo(a)); } }

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

0 1 -1

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

  • метод add,
    который складывает два числа BigDecimal
  • метод subtract,
    который вычитает одно число из другого
  • метод multiply,
    который перемножает два числа BigDecimal
  • метод divide,
    который делит одно число на другое
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить