Big Integer. Multiply(BigInteger, BigInteger) Метод
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает произведение двух значений BigInteger.
public: static System::Numerics::BigInteger Multiply(System::Numerics::BigInteger left, System::Numerics::BigInteger right);
public static System.Numerics.BigInteger Multiply (System.Numerics.BigInteger left, System.Numerics.BigInteger right);
static member Multiply : System.Numerics.BigInteger * System.Numerics.BigInteger -> System.Numerics.BigInteger
Public Shared Function Multiply (left As BigInteger, right As BigInteger) As BigInteger
Параметры
Первое число для умножения.
Второе число для умножения.
Возвращаемое значение
Произведение параметров left и right .
Примеры
В следующем примере выполняется умножение с двумя длинными целыми числами. Поскольку результат превышает диапазон длинного целого числа, OverflowException возникает исключение , и Multiply для обработки умножения вызывается метод . Обратите внимание, что для C# требуется использовать ключевое checked слово (как в этом примере) или /checked+ параметр компилятора, чтобы убедиться, что при числовом переполнении возникает исключение.
long number1 = 1234567890; long number2 = 9876543210; try < long product; product = checked(number1 * number2); >catch (OverflowException)
Dim number1 As Long = 1234567890 Dim number2 As Long = 9876543210 Try Dim product As Long product = number1 * number2 Console.WriteLine(product.ToString("N0")) Catch e As OverflowException Dim product As BigInteger product = BigInteger.Multiply(number1, number2) Console.WriteLine(product.ToString) End Try
Комментарии
Метод Multiply реализуется для языков, которые не поддерживают перегрузку операторов. Его поведение идентично умножению с помощью оператора умножения. Кроме того, Multiply метод является полезной заменой оператора умножения при создании экземпляра переменной BigInteger путем присвоения ей продукта, являющегося результатом умножения, как показано в следующем примере.
// The statement // BigInteger number = Int64.MaxValue * 3; // produces compiler error CS0220: The operation overflows at compile time in checked mode. // The alternative: BigInteger number = BigInteger.Multiply(Int64.MaxValue, 3);
' The statement ' Dim number As BigInteger = Int64.MaxValue * 3 ' produces compiler error BC30439: Constant expression not representable in type 'Long'. ' The alternative: Dim number As BigInteger = BigInteger.Multiply(Int64.MaxValue, 3)
При необходимости этот метод автоматически выполняет неявное преобразование других целочисленных типов в BigInteger объекты . Это показано в примере в следующем разделе, где Multiply методу передаются два Int64 значения.
Применяется к
См. также раздел
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 представляют числа, мы не можем применять с ними стандартные арифметические операции. Все математические действия с данными объектами идут через их методы.
Класс 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);
В обычной практике эти числа используются редко.
Шпаргалка по типам чисел в Java
Составили шпаргалку по числам в Java. Рассмотрели целочисленный тип, числа с плавающей точкой, BigInteger и BigDecimal и символьный тип.
Одним из ключевых аспектов работы с числами в Java является разнообразие типов данных, предоставляемых языком.
В Java существуют различные типы чисел, каждый из которых имеет свои особенности и предназначен для выполнения определенных задач. Среди них:
- Целочисленные типы
- Числа с плавающей точкой
- Символьный тип
- Типы чисел BigInteger и BigDecimal
Рассмотрим их поподробнее.
Целочисленные типы в Java
В Java есть 4 цельночисленных типа:
- byte : 8-битное целое число, со знаком (от -128 до 127 );
- short : 16-битное целое число, со знаком (от -32,768 до 32,767 );
- int : 32-битное целое число, со знаком (от -2,147,483,648 до 2,147,483,647 );
- long : 64-битное целое число, со знаком (от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 ).
Целочисленные типы разной битности в Java используются для представления целых чисел с разным диапазоном значений. Каждый тип имеет определенный размер в битах, что определяет, какой диапазон значений может быть представлен.
Такое разделение по битности нужно, чтобы сэкономить память и ресурсы процессора во время выполнения кода.
Например, использование типов с меньшей битностью, таких как byte или short , позволяет экономить память при хранении большого количества целых чисел, когда размер не является критичным и диапазон значений ограничен.
Как стать разработчиком с нуля
Если нам нужно хранить возраст людей, которое будет находиться в диапазоне от 0 до 150, можно использовать тип byte , который занимает только 8 бит и может хранить значения от -128 до 127.
Пример кода с использованием целочисленного типа int :
public class IntegerExample < public static void main(String[] args) < // Объявление переменных целочисленных типов int number1 = 10; int number2 = 5; int result; // Операции с целыми числами result = number1 + number2; // Сложение System.out.println("Сумма: " + result); result = number1 - number2; // Вычитание System.out.println("Разность: " + result); result = number1 * number2; // Умножение System.out.println("Произведение: " + result); result = number1 / number2; // Целочисленное деление System.out.println("Целочисленное деление: " + result); int remainder = number1 % number2; // Остаток от деления System.out.println("Остаток от деления: " + remainder); // Инкремент и декремент number1++; // Инкрементирование на 1 number2--; // Декрементирование на 1 System.out.println("Инкремент number1: " + number1); System.out.println("Декремент number2: " + number2); >>
Сумма: 15 Разность: 5 Произведение: 50 Целочисленное деление: 2 Остаток от деления: 0 Инкремент number1: 11 Декремент number2: 4
Числа с плавающей точкой в Java
В Java есть 2 типа чисел с плавающей точкой:
- float : 32-битное число с плавающей точкой (от 1.4e-45 до 3.4e+38 ) с точностью около 7 знаков после запятой;
- double : 64-битное число с плавающей точкой (от 4.9e-324 до 1.8e+308 ) с точностью около 15 знаков после запятой.
Числа с плавающей точкой в Java используются для представления нецелых дробных чисел c десятичными частями. Числа с плавающей точкой предоставляют широкий диапазон значений и большую точность, чем целочисленные типы.
Они используются, к примеру, при работе с финансовыми данными, научными вычислениями или графиками функций, когда нужны точные значения.
Числа с плавающей точкой также поддерживают сложные операции вроде взятия квадратного корня, логарифмов и тригонометрических функций.
Тип float может представлять числа от примерно 1.4e-45 до 3.4e+38 , а тип double может представлять числа от примерно 4.9e-324 до 1.8e+308 .
Cборщики (бандлеры) — просто о сложном во Frontend-разработке
Тип float имеет точность около 7-8 знаков после запятой, а тип double имеет точность около 15-16 знаков после запятой.
Пример кода с использованием чисел с плавающей точкой:
public class FloatingPointExample < public static void main(String[] args) < // Объявление переменных чисел с плавающей точкой double number1 = 3.14; double number2 = 2.71; double result; // Операции с числами с плавающей точкой result = number1 + number2; // Сложение System.out.println("Сумма: " + result); result = number1 - number2; // Вычитание System.out.println("Разность: " + result); result = number1 * number2; // Умножение System.out.println("Произведение: " + result); result = number1 / number2; // Деление System.out.println("Деление: " + result); >>
Сумма: 5.85 Разность: 0.42999999999999994 Произведение: 8.5094 Деление: 1.1583011583011583
Символьный тип в Java
Символьный тип char — это 16-битный символ Unicode (от \u0000 до \uffff ). Тип char является псевдоцелочисленным типом, поэтому значения этого типа можно задавать в виде числа – кода символа из таблицы кодировки UTF-16.
Он позволяет работать с отдельными символами, включая буквы, цифры, знаки препинания, специальные символы и другие символы, которые могут быть отображены на экране или использованы в текстовых данных.
Символьным типом обозначаются названия переменных, текстовые сообщения, метки, названия файлов.
Также он позволяет работать с символами управления, которые используются для форматирования текста или внедрения специальных символов в вывод. Например, символ перевода строки \n или символ табуляции \t используются для управления выводом текста или форматирования.
Пример использования символьного типа в Java:
public class CharExample < public static void main(String[] args) < char grade = 'A'; char dollarSign = '$'; char digit = '4'; char specialChar = '#'; System.out.println("Оценка: " + grade); System.out.println("Символ доллара: " + dollarSign); System.out.println("Цифра: " + digit); System.out.println("Специальный символ: " + specialChar); >>
Оценка: A Символ доллара: $ Цифра: 4 Специальный символ: #
Типы чисел BigInteger и BigDecimal в Java
В Java есть 2 уникальных типа чисел.
- BigInteger : используется для работы с очень большими целыми числами;
- BigDecimal : используется для работы с очень большими числами с плавающей точкой, с высокой точностью.
Типы чисел BigInteger и BigDecimal в Java используются для работы с большими и точными числами, которые выходят за диапазоны, предоставляемые обычными типами данных, такими как int или double .
BigInteger используется для работы с целыми числами произвольного размера. Он предоставляет методы для выполнения арифметических операций, таких как сложение, вычитание, умножение и деление, над числами с произвольным количеством цифр. Это делает BigInteger особенно полезным при работе с большими числами, которые превышают диапазон типов данных int или long .
BigDecimal , в свою очередь, используется для работы с числами с плавающей точкой произвольной точности. В отличие от типов данных float и double , которые представляют числа с ограниченной точностью, BigDecimal предоставляет точные результаты при выполнении арифметических операций с десятичными числами. Это особенно важно при работе с финансовыми операциями, где требуется высокая точность расчетов.
Пример кода с использованием чисел BigInteger и BigDecimal на Java:
import java.math.BigInteger; import java.math.BigDecimal; public class BigNumberExample < public static void main(String[] args) < BigInteger bigInteger = new BigInteger("12345678901234567890"); BigDecimal bigDecimal = new BigDecimal("3.141592653589793238462643383"); System.out.println("BigInteger: " + bigInteger); System.out.println("BigDecimal: " + bigDecimal); BigInteger result1 = bigInteger.add(new BigInteger("98765432109876543210")); System.out.println("Сумма BigInteger: " + result1); BigDecimal result2 = bigDecimal.multiply(new BigDecimal("2.718281828459045")); System.out.println("Произведение BigDecimal: " + result2); >>
BigInteger: 12345678901234567890 BigDecimal: 3.141592653589793238462643383 Сумма BigInteger: 111111111011111111100 Произведение BigDecimal: 8.53973422267357976068929674195
Заключение
Надеемся, вам стало понятнее, какие типы чисел в Java использовать для решения ваших задач. Обращайтесь к этой статье как к шпаргалке, если у вас возникли сложности в определении типов данных.
Также подпишитесь на тэг Java, чтобы следить за новыми статьями по языку программирования.