Класс Math и пакет java.math
Класс Math содержит методы, связанные с геометрией и тригонометрией и прочей математики. Методы реализованы как static, поэтому можно сразу вызывать через Math.methodName() без создания экземпляра класса.
В классе определены две константы типа double: E и PI.
Популярные методы для тригонометрических функций принимают параметр типа double, выражающий угол в радианах.
- sin(double d)
- cos(double d)
- tan(double d)
- asin(double d)
- acos(double d)
- atan(double d)
- atan2(double y, double x)
Существуют также гиперболические функции: sinh(), cosh(), tanh().
Экспоненциальные функции: cbrt(), exp(), expm1(), log(), log10(), log1p(), pow(), scalb(), sqrt().
Из них хорошо знакомы возведение в степень — pow(2.0, 3.0) вернёт 8.0.
Также популярен метод для извлечения квадратного корня — sqrt(4.0). Если аргумент меньше нуля, то возвращается NaN. Похожий метод cbrt() извлекает кубический корень. Если аргумент отрицательный, то и возвращаемое значение будет отрицательным: -27.0-> -3.0.
- abs() — возвращает абсолютное значение аргумента
- ceil() — возвращает наименьшее целое число, которое больше аргумента
- floor() — возвращает наибольшее целое число, которое меньше или равно аргументу
- max() — возвращает большее из двух чисел
- min() — возвращает меньшее из двух чисел
- nextAfter() — возвращает следующее значение после аргумента в заданном направлении
- nextUp() — возвращает следующее значение в положительном направлении
- rint() — возвращает ближайшее целое к аргументу
- round() — возвращает аргумент, округлённый вверх до ближайшего числа
- ulp() — возвращает дистанцию между значением и ближайшим большим значением
- copySign() — возвращает аргумент с тем же знаком, что у второго аргумента
- getExponent() — возвращает экспоненту
- IEEEremainder() — возвращает остаток от деления
- hypot() — возвращает длину гипотенузы
- random() — возвращает случайное число между 0 и 1 (единица в диапазон не входит)
- signum() — возвращает знак значения
- toDegrees() — преобразует радианы в градусы
- toRadians() — преобразует градусы в радианы
Вычислим наибольшее и наименьшее числа из двух заданных значений.
double value1 = 9.14; double value2 = 9.15; System.out.println("Maximum of value1 and value2 is " + Math.max(value1, value2)); System.out.println("Minimum of value1 and value2 is " + Math.min(value1, value2));
Большие числа
Если вам не хватает точности основных типов для представления целых и вещественных чисел, то можно использовать классы BigInteger и BigDecimal из пакета java.math, которые предназначены для выполнения действий с числами, состоящими из произвольного количества цифр.
Для преобразования обычного числа в число с произвольной точностью (называемое большим числом) вызывается статический метод valueOf():
BigInteger bigIntegerA = BigInteger.valueOf(42);
При работе с большими числами нельзя использовать привычные математические операции с помощью + или * и т.п. Вместо них следует использовать специальные методы add() (сложение), multiply() (умножение), divide() (деление) и т.д.
BigInteger bigIntegerA = BigInteger.valueOf(42); BigInteger bigItBigIntegerB = bigIntegerA.add(bigIntegerA); BigInteger bigIntegerC = bigIntegerA.multiply(bigIntegerA);
В обычной практике эти числа используются редко.
Multiply java что это


Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
BigDecimal и BigInteger
Класс java.math.BigDecimal предпочтительнее для работы с финансами вместо double, так как более гибок в настройках. Мне не приходилось использовать класс на практике. Но при создании бухгалтерского софта на него стоит обратить внимание.
Создать BigDecimal из числа типа double просто:
BigDecimal bigDecimal = new BigDecimal(1.5);
Можно создать из строки:
BigDecimal bigDecimal = new BigDecimal("1.5");
Чтобы задать количество цифр после запятой, используйте метод setScale(). Хорошей практикой является одновременное указание вместе с масштабом режима округления с помощью setScale(scale, roundingMode). Режим округления задаёт правило округления числа.
bigDecimal.setScale(2);
Есть восемь вариантов режима округления, которые задаются константами:
ROUND_CEILING: В большую сторону
0.333 -> 0.34 -0.333 -> -0.33
ROUND_DOWN: Отбрасывание разряда
0.333 -> 0.33 -0.333 -> -0.33
ROUND_FLOOR: В меньшую сторону
0.333 -> 0.33 -0.333 -> -0.34
ROUND_HALF_UP: Округление вверх, если число после запятой >= .5
0.5 -> 1.0 0.4 -> 0.0
ROUND_HALF_DOWN: Округление вверх, если число после запятой > .5
0.5 -> 0.0 0.6 -> 1.0
ROUND_HALF_EVEN: Округление половины по чётности округляет как обычно. Однако, когда округляемая цифра 5, округление будет идти вниз, если цифра слева от 5 чётная и вверх, если нечётная. Это лучше всего иллюстрируется примером:
BigDecimal a = new BigDecimal("2.5"); // цифра слева от 5 чётная, поэтому округление вниз BigDecimal b = new BigDecimal("1.5"); // цифра слева от 5 нечётная, поэтому округление вверх Log.i(TAG, a.setScale(0, BigDecimal.ROUND_HALF_EVEN).toString());// => 2 Log.i(TAG, b.setScale(0, BigDecimal.ROUND_HALF_EVEN).toString());// => 2
ROUND_UNNECESSARY: Используйте ROUND_UNNECESSARY когда необходимо использовать один из методов, который требует ввода режима округления, но известно, что результат округлять не надо.
При делении будьте осторожны и указывайте способ округления в методе divide(). В противном случае можно получить ArithmeticException.
Числа BigDecimal являются неизменными (как String). Это означает, что если создаётся новый объект BigDecimal со значением «2.00», такой объект останется «2.00» и никогда не может быть изменён.
Поэтому методы add(), multiply(), subtract(), divide(), mod() возвращают новый объект BigDecimal, содержащий результат.
Не используйте для сравнения метод equals(), потому что метод будет сравнивать масштабы. Если масштабы различаются. Вместо этого следует использовать методы compareTo() и signum().
Аналогично работайте с классом BigInteger.
BigInteger
Найти наибольшее число из двух при помощи метода max().
BigInteger firstNumber, secondNumber, maxNumber; firstNumber = new BigInteger("900"); secondNumber = new BigInteger("102"); maxNumber = firstNumber.max(secondNumber); System.out.println("The maximum value between " + firstNumber + " and " + secondNumber + " is " + maxNumber);
Multiply java что это
Встроенные примитивные числовые типы не всегда могут подходить для определенных программ. Например, необходимо хранить и использовать в программе очень большие числа, которые выходят за пределы допустимых значений для типов long и double. В этом случае для работы с числовыми данными можно использовать два дополнительных типа из пакета java.math — BigInteger (для целочисленных данных) и BigDecimal (для чисел с плавающей точкой).
Основные методы класса BigInteger:
- BigInteger add(BigInteger other) : возвращает сумму двух чисел
- BigInteger subtract(BigInteger other) : возвращает разность двух чисел
- BigInteger multiply(BigInteger other) : возвращает произведение двух чисел
- BigInteger divide(BigInteger other) : возвращает частное двух чисел
- BigInteger mod(BigInteger other) : возвращает остаток от целочисленного деления двух чисел
- BigInteger sqrt() : возвращает квадратный корень числа
- int compareTo(BigInteger other) : сравнивает два числа. Возвращает -1, если текущий объект меньше числа other, 1 — если текущий объект больше и 0 — если числа равны
- static BigInteger valueOf(long x) : возвращает объект BigInteger, значение которого равно числу, переданному в качестве параметра
- int intValue() : конвертирует объект BigInteger в объект int
- byte byteValue() : преобразует объект BigInteger в byte
- short shortValue() : преобразует объект BigInteger в short
- long longValue() : преобразует объект BigInteger в long
Основные методы класса BigDecimal:
- BigDecimal add(BigDecimal other) : возвращает сумму двух чисел
- BigDecimal subtract(BigDecimal other) : возвращает разность двух чисел
- BigDecimal multiply(BigDecimal other) : возвращает произведение двух чисел
- BigDecimal divide(BigDecimal other) : возвращает частное двух чисел
- BigDecimal divide(BigDecimal other, RoundingMode mode) : результат деления двух чисел, округленное в соответствии с режимом mode
- int compareTo(BigDecimal other) : сравнивает два числа. Возвращает -1, если текущий объект меньше числа other, 1 — если текущий объект больше и 0 — если числа равны
- static BigDecimal valueOf(double x) : возвращает объект BigDecimal, значение которого равно числу, переданному в качестве параметра
- double doubleValue() : преобразует объект BigDecimal в double
- float floatValue() : преобразует объект BigDecimal в float
Пример использования классов BigInteger и BigDecimal:
import java.math.*; public class Program < public static void main(String[] args) < BigInteger a = BigInteger.valueOf(2147483647); BigInteger b = BigInteger.valueOf(2147483641); //a = a * b; // так нельзя a = a.multiply(b); System.out.println(a); // 4611686001247518727 long x = a.longValue(); System.out.println(x); // 4611686001247518727 BigDecimal c = BigDecimal.valueOf(2325.06); BigDecimal d = BigDecimal.valueOf(215.06); c = c.subtract(d.multiply(BigDecimal.valueOf(2.1))); System.out.println(c); // 1873.434 double y = c.doubleValue(); System.out.println(y); // 1873.434 >>
Стоит отметить, несмотря на то, что объекты BigInteger и BigDecimal представляют числа, мы не можем применять с ними стандартные арифметические операции. Все математические действия с данными объектами идут через их методы.
