Что функция C++ состоит в том, чтобы возвести число в степень?

У меня была эта проблема, а также некоторые другие проблемы с Brewed Python на OS & nbsp; X v10.9 (Mavericks).

sudo pip install --upgrade setuptools

не работал для я, и я думаю, что моя setuptools / дистрибутив setup был взломан.

Я, наконец, получил его для работы, запустив

sudo easy_install -U setuptools

111
задан Benoît 10 May 2009 в 19:24
поделиться

8 ответов

pow () в библиотеке cmath. Подробнее здесь . Не забудьте поместить #include в начало файла.

132
ответ дан 24 November 2019 в 02:58
поделиться

используйте голову () функция в cmath, tgmath или math.h библиотеке.

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int a,b;
cin >> a >> b;
cout << pow(a,b) << endl; // this calculates a^b

return 0;
}

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

, Но, действительно имеют в виду для некоторых чисел, что это может привести к числу меньше, чем корректный ответ. так, например, необходимо вычислить 5^2, затем ответ может быть дан как 24,99999999999 на некоторых компиляторах. при изменении типа данных к интервалу ответ будет 24, а не 25 корректный ответ. Так, сделайте это

int c=(int)(pow(a,b)+0.5)

Теперь, Ваш ответ будет корректен. также, для данных очень больших количеств потерян в изменении типа данных, вдвое большего по сравнению с долгим длинным целым. например, Вы пишете

long long int c=(long long int)(pow(a,b)+0.5);

и даете вход a=3 и b=38 затем, результат выйдет, чтобы быть 1350851717672992000, в то время как корректный ответ равняется 1350851717672992089, это происходит, потому что голова () функционирует возврат 1.35085e+18, который продвинут на интервал как 1350851717672992000. Я предлагаю писать пользовательскую функцию питания для таких сценариев, like:-

long long int __pow (long long int a, long long int b)
{
long long int q=1;
for (long long int i=0;i<=b-1;i++)
{
q=q*a;
}

return q;
}

и затем назвать его каждый раз, когда Вы хотите как,

int main()
{
long long int a,b;
cin >> a >> b;

long long int c=__pow(a,b);
cout << c << endl;

return 0;
}

Для чисел, больше, чем диапазон долгого длинного целого, или пользуетесь библиотекой повышения или строками.

0
ответ дан 24 November 2019 в 02:58
поделиться
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)

Ваш первоначальный заголовок вопроса вводит в заблуждение. Чтобы просто квадрат , используйте 2 * 2 .

4
ответ дан 24 November 2019 в 02:58
поделиться

Это pow или powf в

Нет специального инфиксного оператора, как в Visual Basic или Python

5
ответ дан 24 November 2019 в 02:58
поделиться

Хотя pow (base, exp) - отличное предложение, имейте в виду, что он обычно работает с числами с плавающей точкой.

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

А конкретно для квадрата, вы можете просто самостоятельно перемножить числа вместе, с плавающей запятой или целыми; на самом деле это не снижение читабельности (IMHO), и вы избегаете накладных расходов на производительность при вызове функции.

11
ответ дан 24 November 2019 в 02:58
поделиться

Вы должны уметь использовать в математике обычные методы C.

#include

pow (2,3)

, если вы используете unix- как система, man cmath

Это то, о чем вы спрашиваете?

Sujal

14
ответ дан 24 November 2019 в 02:58
поделиться

Используйте функцию pow (x, y): См. Здесь

Просто включите math.h, и все готово.

14
ответ дан 24 November 2019 в 02:58
поделиться

std :: pow в заголовке содержит следующие перегрузки:

pow(float, float);
pow(float, int);
pow(double, double); // taken over from C
pow(double, int);
pow(long double, long double);
pow(long double, int);

Теперь вы не можете просто сделать

pow(2, N)

, когда N является int, потому что он не знает, какую из версий float , double или long double ] ему следует использовать, и вы получите ошибку неоднозначности. Для всех трех потребуется преобразование из int в число с плавающей запятой, и все три одинаково дороги!

Следовательно, убедитесь, что первый аргумент введен так, чтобы он идеально соответствовал одному из этих трех. Я обычно использую дубль

pow(2.0, N)

Опять какая-то адвокатская хрень от меня. Я сам часто попадал в эту ловушку, поэтому хочу вас об этом предупредить.

90
ответ дан 24 November 2019 в 02:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: