Метод subtract
Метод subtract класса BigDecimal выполняет вычитание
одного десятичного числа из другого. Первым параметром метод
принимает вычитаемое (то, что нужно отнять), а сам метод вызывается
у уменьшаемого (того числа, из которого вычитают). Метод возвращает
новый объект BigDecimal, а исходные объекты не изменяются,
так как класс BigDecimal неизменяемый.
Вторым необязательным параметром можно передать объект
MathContext, который задаёт точность и режим округления
результата. Если второй параметр не указан, вычитание выполняется
без округления с максимально возможной точностью.
Синтаксис
bigDecimal1.subtract(bigDecimal2, [mathContext])
Пример
Давайте вычтем из числа 10.5 число 3.2:
import java.math.BigDecimal;
public class Main
{
public static void main(String[] args)
{
BigDecimal a = new BigDecimal("10.5");
BigDecimal b = new BigDecimal("3.2");
BigDecimal res = a.subtract(b);
System.out.println(res);
}
}
Результат выполнения кода:
7.3
Пример
Давайте вычтем из числа 5 число 8. В результате
должно получиться отрицательное число:
import java.math.BigDecimal;
public class Main
{
public static void main(String[] args)
{
BigDecimal a = new BigDecimal("5");
BigDecimal b = new BigDecimal("8");
BigDecimal res = a.subtract(b);
System.out.println(res);
}
}
Результат выполнения кода:
-3
Пример
Давайте вычтем из числа 1.00 число 0.50
и посмотрим, как сохраняется масштаб результата:
import java.math.BigDecimal;
public class Main
{
public static void main(String[] args)
{
BigDecimal a = new BigDecimal("1.00");
BigDecimal b = new BigDecimal("0.50");
BigDecimal res = a.subtract(b);
System.out.println(res);
System.out.println(res.scale());
}
}
Результат выполнения кода:
0.50
2
Пример
Давайте выполним вычитание с указанием объекта MathContext
для округления результата до трёх значащих цифр:
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class Main
{
public static void main(String[] args)
{
BigDecimal a = new BigDecimal("12345.678");
BigDecimal b = new BigDecimal("1234.567");
MathContext mc = new MathContext(3, RoundingMode.HALF_UP);
BigDecimal res = a.subtract(b, mc);
System.out.println(res);
}
}
Результат выполнения кода:
1.11E+4
Пример
Давайте вычтем из одного числа другое с помощью цепочки вызовов
и сравним результат с методом add:
import java.math.BigDecimal;
public class Main
{
public static void main(String[] args)
{
BigDecimal a = new BigDecimal("100");
BigDecimal b = new BigDecimal("25");
BigDecimal c = new BigDecimal("10");
BigDecimal res = a.subtract(b).subtract(c);
System.out.println(res);
}
}
Результат выполнения кода:
65