Как сделать степень в java

Добавил пользователь Алексей Ф.
Обновлено: 10.09.2024

Существует ли в Java какой-либо другой способ вычисления степени целого числа?

Я использую Math.pow(a, b) сейчас, но он возвращает двойник, и это обычно много работы, и выглядит менее чистым, когда вы просто хотите использовать целые числа (степень тогда также всегда будет приводить к целому числу).

Есть ли что-то такое же простое, как a**b , как в Python?

Целые числа имеют только 32 бита. Это означает, что его максимальное значение равно 2^31 -1 . Как вы видите, для очень малых чисел вы быстро получаете результат, который больше не может быть представлен целым числом. Вот почему Math.pow использует double.

Если вы хотите получить произвольную целочисленную точность, используйте BigInteger.pow . Но это, конечно, менее эффективно.

Лучше всего алгоритм основан на рекурсивном определении мощности a^b.

Время выполнения операции равно O (logb). Ссылка: дополнительная информация

Нет, нет ничего короче, чем a**b

Вот простой цикл, если вы хотите избежать двойников:

Если вы хотите использовать pow и преобразовать результат в целое число, приведите результат следующим образом:

В Google Guava есть математические утилиты для целых чисел. IntMath

Математические библиотеки гуавы предлагают два метода, которые полезны при вычислении точных целых степеней:

pow(int b, int k) вычисляет b до K-й степени, и обертывает на переполнение

checkedPow(int b, int k) идентичен за исключением того, что он бросает ArithmeticException на переполнение

Лично checkedPow() удовлетворяет большинству моих потребностей в целочисленном возведении в степень и является более чистым и безопасным, чем использование двойных версий и округления и т. д. Почти во всех местах, где мне нужна функция питания, переполнение является ошибкой (или невозможно, но я хочу, чтобы мне сказали, если невозможное когда-нибудь станет возможным).

Если вы хотите получить результат long , Вы можете просто использовать соответствующий LongMath методы и аргументы pass int .

Для выполнения различных математических операций в Java в пакете java.lang определен класс Math . Рассмотрим его основные методы:

abs(double value) : возвращает абсолютное значение для аргумента value

acos(double value) : возвращает арккосинус value. Параметр value должен иметь значение от -1 до 1

asin(double value) : возвращает арксинус value. Параметр value должен иметь значение от -1 до 1

atan(double value) : возвращает арктангенс value

cbrt(double value) : возвращает кубический корень числа value

ceil(double value) : возвращает наименьшее целое число с плавающей точкой, которое не меньше value

cos(double d) : возвращает косинус угла d

cosh(double d) : возвращает гиперболический косинус угла d

exp(double d) : возвращает основание натурального логарифма, возведенное в степень d

floor(double d) : возвращает наибольшее целое число, которое не больше d

floorDiv(int a, int b) : возвращает целочисленный результат деления a на b

log(double a) : возвращает натуральный логарифм числа a

log1p(double d) : возвращает натуральный логарифм числа (d + 1)

log10(double d) : возвращает десятичный логарифм числа d

max(double a, double b) : возвращает максимальное число из a и b

min(double a, double b) : возвращает минимальное число из a и b

pow(double a, double b) : возвращает число a, возведенное в степень b

random() : возвращает случайное число от 0.0 до 1.0

rint(double value) : возвращает число double, которое представляет ближайшее к числу value целое число

round(double d) : возвращает число d, округленное до ближайшего целого числа

scalb(double value, int factor) : возвращает произведение числа value на 2 в степени factor

signum(double value) : возвращает число 1, если число value положительное, и -1, если значение value отрицательное. Если value равно 0, то возвращает 0

sin(double value) : возвращает синус угла value

sinh(double value) : возвращает гиперболический синус угла value

sqrt(double value) : возвращает квадратный корень числа value

tan(double value) : возвращает тангенс угла value

tanh(double value) : возвращает гиперболический тангенс угла value

toDegrees(double value) переводит радианы в градусы и toRadians(double value) - градусы в радианы

Математические функции и константы Java

Класс Math содержит набор математических функций, которые часто оказываются необходимыми при решении практических задач. Чтобы извлечь квадратный корень из числа, применяют метод sqrt(). Если вы в школе учили Pascal, то там также применяется метод sqrt().


Между методами print() и sqrt() есть тонкая разница. Метод print() принадлежит объекту System.out, определенному в классе System. Но метод sqrt принадлежит классу Math, а не объекту. Такие методы называются статическими.

В языке Java нет операции возведения в степень: для этого нужно использовать метод pow() класса Math. В результате выполнения следующей строки кода переменной y присваивается значение переменной x, возведенное в степень а.

Сегодня рассмотрим вариант, когда вам нужно число X возвести в степень Y на языке JavaScript.

Будет рассмотрено несколько вариантов: использование стандартных способов языка, а также написание своей функции.

Math.pow()

Math.pow(base, exponent)
base — число, которое возводится в степень
exponent — степень, в которую нужно возвести

Оператор ** (ES6)

С появлением стандарта ES6, появилась возможность возведения в степень числа с помощью такого оператора — **

Это пожалуй наиболее простой вариант на сегодняшний день.

Функция возведения в степень с использованием цикла

Если варианты описанные выше вам не подходят, можно написать собственную функцию (чаще всего такое просто требуют на собеседовании или при прохождении каких-либо тестов).

Читайте также: