Класс BigDecimal расположен В пакете java.math .
Каждый объект этого класса хранит два целочисленных значения: мантиссу вещественного числа в виде объекта класса Biglnteger , и неотрицательный десятичный порядок числа типа int .
Например, для числа 76.34862 будет храниться мантисса 7 634 862 в объекте класса Biglnteger , и порядок 5 как целое число типа int . Таким образом, мантисса может содержать любое количество цифр, а порядок ограничен значением константы integer.MAX_VALUE . Результат операции над объектами класса BigDecimal округляется по одному из восьми правил, определяемых следующими статическими целыми константами:
В классе BigDecimal четыре конструктора:
При использовании третьего из перечисленных конструкторов возникает неприятная особенность, отмеченная в документации. Поскольку вещественное число при переводе в двоичную форму представляется, как правило, бесконечной двоичной дробью, то при создании объекта, например, BigDecimal(0.1) , мантисса, хранящаяся в объекте, окажется очень большой. Она показана на Рисунок 4.5. Но при создании такого же объекта четвертым конструктором, BigDecimal ("0.1") , мантисса будет равна просто 1.
В Классе переопределены методы doubleValue(), floatValue(), intValue(), longValue() .
Большинство методов этого класса моделируют операции с вещественными числами. Они возвращают объект класса BigDecimal . Здесь буква х обозначает объект класса BigDecimal , буква n — целое значение типа int , буква r — способ округления, одну из восьми перечисленных выше констант:
abs() — абсолютное значение объекта this ;
add(x) — операция this + х ;
divide(х, r) — операция this / х с округлением по способу r ;
divide(х, n, r) — операция this / х с изменением порядка и округлением по способу r ;
mах(х) — наибольшее из this и х ;
min(x) — наименьшее из this и х ;
movePointLeft(n) — сдвиг влево на n разрядов;
movePointRight(n) — сдвиг вправо на n разрядов;
multiply(х) — операция this * х ;
negate() — возврзщает объект с обратным знаком;
scale() — возвращает порядок числз;
setscaie(n) — устзнавливает новый порядок n ;
setscaie(n, r) — устанавливает новый порядок п и округляет число при необходимости по способу r ;
signumo — знак числа, хранящегося в объекте;
subtract(х) — операция this - х ;
toBiginteger() — округление числа, хранящегося в объекте;
unscaiedvalue() —возвращает мантиссу числа.