Степень в C, C++ и С#: как возвести число в любую степень, побитовые операции
Функция pow является частью библиотеки cmath, и поэтому её заголовок обязательно должен быть подключен в секции #include, как это сделано в примере. Также cout и cin являются частью библиотеки iostream и она у нас тоже подключена.
Давайте рассмотрим еще несколько примеров:
Пример, в котором степень и число задается пользователем:
Пояснение: возведение «2» в степень «n» реализуется с помощью сдвига, в общем случае:
- сдвиг влево (в сторону старших разрядов) реализует умножение на два,
- сдвиг вправо (в сторону младших разрядов) реализует деление на два.
Число n должно быть целочисленным.
Пример, в котором не используется функция pow()
В этом примере пользователь вводит числа n и a . Где n — число, которое возводится в степень, a — степень числа. В цикле for, мы умножаем число n на само себя a раз и в результате получаем степень.
Как возвести в степень в c
Стандартная библиотека языка Си предоставляет ряд математических функций, которые определены в разных заголовочных файлах, но в основном определены в файле math.h .
Степерь числа. pow
Функция pow() , определенная в заголовочном файле math.h , возвращает степень числа:
Стоит отметить, что эта функция возвращает число типа double .
Для возведения в степень чисел типа float и long double также определены функции powf() и powl() соответственно.
Округление числа. round
Функция round() округляет число до ближайшего целого. В качестве параметра она принимает число типа double :
Квадратный корень. sqrt
Функция sqrt() возвращает квадратный корень числа типа double :
Для получения квадратного корня числа float также есть функция sqrtf() , а для числа типа long double — функция sqrtl()
pow в C++: возведение в степень с примерами
Всем привет! В данной статье речь пойдет о функции pow в C++. Данная функция позволяет возвести в степень нужное нам число. Сначала мы рассмотрим pow из заголовочного файла <cmath> , после чего сравним ее с другими похожими функциями powf и powl . И в конце мы рассмотрим ошибки, которые могут возникнуть при работе с данной функцией.

Как возвести число в степень в C++
Для возведения числа в степень в C++ есть функция pow . Данная функция доступна при подключении <cmath> (данный файл также объявляет такие функции как log , fabs и exp ).
По своей сути функция pow эквивалентна следующей формуле: pow(base, exponent) = base exponent
Данная функция объявлена следующим образом:
Из данной сигнатуры видно, что:
- первым аргументом функция pow принимает основание, которое будем возводить в степень;
- вторым аргументом нужно передать степень, в которую нужно возвести основание;
- результат данной функции (основание возведенное в степень) имеет тип double .
Теперь давайте попробуем вызвать данную функцию с разными параметрами, чтобы лучше понять, как она работает:
Вывод данной программы:
Теперь давайте попробуем передать данной функции вещественные числа, начав с дробного основания:
Как вы видите, pow позволяет нам работать с дробными основаниями так же, как и с целыми. Теперь давайте попробуем возвести в дробную степень:
Как видите, pow без проблем позволяет нам использовать дробные числа в качестве степени.
Поскольку корень числа эквивалентен возведению в степень 0.5 , мы можем использовать функцию pow вместо sqrt . Однако стоит отметить, что функция sqrt будет предпочтительнее в данном случае. Подробнее о возведении в степень можете почитать в википедии.
Какой будет результат выполнения следующего кода:
Функция pow используется для возведения числа в степень. В первом случае, pow(4, 0.5) возводит число 4 в степень 0.5, что эквивалентно квадратному корню из 4, равному 2. Во втором случае, pow(9, 1.5) возводит 9 в степень 1.5. Это эквивалентно 9 1.5 или 9 * sqrt(9), что равно 27.
powl: возведение long double в степень
powl является эквивалентом функции pow только для чисел типа long double . В остальном, данная функция работает точно так же: принимает base и exponent , а возвращает результат возведения в степень:
powf: возведение float в степень
powf — это еще один аналог функции pow . powf работает только с числами типа float :
Тип float имеет меньший диапазон значений по сравнению с double . В данном случае результат возведения в степень оказался слишком большим для float , поэтому мы видим inf в результате.
nan при работе с pow, powf, powl
Если основание отрицательно, а степень является дробным числом, то функция pow вернет nan :
Однако данное правило не работает если основанием является -INFINITY . В случае с минус бесконечностью, pow вернет +INFINITY :
Также возможны ошибки при использовании определенных реализаций функции pow (зависит от выбранного вами компилятора):
pow, powf, powl
If no errors occur, base raised to the power of exponent ( base exponent
) is returned.
If a domain error occurs, an implementation-defined value is returned (NaN where supported).
If a pole error or a range error due to overflow occurs, ±HUGE_VAL , ±HUGE_VALF , or ±HUGE_VALL is returned.
If a range error occurs due to underflow, the correct result (after rounding) is returned.
[edit] Error handling
Errors are reported as specified in math_errhandling.
If base is finite and negative and exponent is finite and non-integer, a domain error occurs and a range error may occur.
If base is zero and exponent is zero, a domain error may occur.
If base is zero and exponent is negative, a domain error or a pole error may occur.
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
- pow ( + 0 , exponent ) , where exponent is a negative odd integer, returns +∞ and raises FE_DIVBYZERO
- pow ( — 0 , exponent ) , where exponent is a negative odd integer, returns -∞ and raises FE_DIVBYZERO
- pow ( ± 0 , exponent ) , where exponent is negative, finite, and is an even integer or a non-integer, returns +∞ and raises FE_DIVBYZERO
- pow ( ± 0 , — ∞ ) returns +∞ and may raise FE_DIVBYZERO (until C23)
- pow ( + 0 , exponent ) , where exponent is a positive odd integer, returns +0
- pow ( — 0 , exponent ) , where exponent is a positive odd integer, returns -0
- pow ( ± 0 , exponent ) , where exponent is positive non-integer or a positive even integer, returns +0
- pow ( — 1 , ±∞ ) returns 1
- pow ( + 1 , exponent ) returns 1 for any exponent , even when exponent is NaN
- pow ( base, ± 0 ) returns 1 for any base , even when base is NaN
- pow ( base, exponent ) returns NaN and raises FE_INVALID if base is finite and negative and exponent is finite and non-integer.
- pow ( base, — ∞ ) returns +∞ for any |base|<1
- pow ( base, — ∞ ) returns +0 for any |base|>1
- pow ( base, + ∞ ) returns +0 for any |base|<1
- pow ( base, + ∞ ) returns +∞ for any |base|>1
- pow ( — ∞, exponent ) returns -0 if exponent is a negative odd integer
- pow ( — ∞, exponent ) returns +0 if exponent is a negative non-integer or negative even integer
- pow ( — ∞, exponent ) returns -∞ if exponent is a positive odd integer
- pow ( — ∞, exponent ) returns +∞ if exponent is a positive non-integer or positive even integer
- pow ( + ∞, exponent ) returns +0 for any negative exponent
- pow ( + ∞, exponent ) returns +∞ for any positive exponent
- except where specified above, if any argument is NaN, NaN is returned
[edit] Notes
Although pow cannot be used to obtain a root of a negative number, cbrt is provided for the common case where exponent is 1/3.