Как поднять число до мощности?
2^1
2^2
2^3
и т.д...
Как поднять число до мощности?
2^1
2^2
2^3
и т.д...
pow() в cmath библиотеке. Больше информации здесь. Не забудьте поставить #include<cmath>
вверху файла.
std::pow
в заголовке <cmath>
имеет следующие перегрузки:
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 в число с плавающей запятой, и все три одинаково дороги!
Поэтому обязательно наберите первый аргумент, чтобы он идеально совпадал с одним из этих трех. Я обычно использую double
pow(2.0, N)
Какой-то адвокат дерьмо от меня снова. Я сам часто попадал в эту ловушку, поэтому собираюсь предупредить вас об этом.
В С++ оператор "^" является поразрядным ИЛИ. Он не работает для повышения мощности. Х < n - левый сдвиг двоичного числа, который совпадает с умножением x на 2 n раз и может использоваться только при повышении 2 до мощности. Функция POW является математической функцией, которая будет работать в целом.
Используйте функцию pow (x, y): См. здесь
Просто включите math.h, и вы все настроены.
Вы должны иметь возможность использовать обычные методы C в математике.
#include <cmath>
pow(2,3)
если вы используете unix-подобную систему, man cmath
Это то, о чем вы спрашиваете?
Sujal
Хотя pow( base, exp )
является отличным предложением, имейте в виду, что он обычно работает с плавающей точкой.
Это может быть или не быть тем, что вы хотите: в некоторых системах простой цикл, умножающийся на накопитель, будет быстрее для целых типов.
И для квадрата, вы можете просто умножить числа вместе самостоятельно, с плавающей точкой или целое число; это действительно не уменьшает читаемость (IMHO), и вы избегаете служебных расходов функции вызова функции.
У меня недостаточно репутации для комментариев, но если вам нравится работать с QT, у них есть своя версия.
#include <QtCore/qmath.h>
qPow(x, y); // returns x raised to the y power.
Или, если вы не используете QT, cmath имеет в основном одно и то же.
#include <cmath>
double x = 5, y = 7; //As an example, 5 ^ 7 = 78125
pow(x, y); //Should return this: 78125
#include <iostream>
#include <conio.h>
using namespace std;
double raiseToPow(double ,int) //raiseToPow variable of type double which takes arguments (double, int)
void main()
{
double x; //initializing the variable x and i
int i;
cout<<"please enter the number";
cin>>x;
cout<<"plese enter the integer power that you want this number raised to";
cin>>i;
cout<<x<<"raise to power"<<i<<"is equal to"<<raiseToPow(x,i);
}
//определение функции raiseToPower
double raiseToPow(double x, int power)
{
double result;
int i;
result =1.0;
for (i=1, i<=power;i++)
{
result = result*x;
}
return(result);
}
Это значение pow или powf в <math.h>
В Visual Basic или Python нет специального инфиксного оператора
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)
Ваш исходный заголовок вопроса вводит в заблуждение. Для просто квадрата используйте 2*2
.
Во многих ответах предложены pow()
или аналогичные альтернативы или их собственные реализации. Однако, учитывая примеры (2^1
, 2^2
и 2^3
) в вашем вопросе, я бы догадался, нужно ли вам повышать только 2
до целой степени. Если это так, я бы предложил вам использовать 1 << n
для 2^n
.
если вы хотите иметь дело только с base_2, тогда я рекомендую использовать левый оператор сдвига << вместо математической библиотеки.
образец кода:
int exp = 16;
for(int base_2 = 1; base_2 < (1 << exp); (base_2 <<= 1)){
std::cout << base_2 << std::endl;
}
образец вывода:
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
Обратите внимание, что использование pow(x,y)
менее эффективно, чем x*x*x
y раз, как показано здесь и дан ответ здесь fooobar.com/questions/60726/....
Так что, если вы хотите повысить эффективность, используйте x*x*x
.
int power (int i, int ow) // works only for ow >= 1
{ // but does not require <cmath> library!=)
if (ow > 1)
{
i = i * power (i, ow - 1);
}
return i;
}
cout << power(6,7); //you can enter variables here
Я использую библиотеку cmath
или math.h
, чтобы использовать библиотечные функции pow()
, которые заботятся о полномочиях
#include<iostream>
#include<cmath>
int main()
{
double number,power, result;
cout<<"\nEnter the number to raise to power: ";
cin>>number;
cout<<"\nEnter the power to raise to: ";
cin>>power;
result = pow(number,power);
cout<<"\n"<< number <<"^"<< power<<" = "<< result;
return 0;
}
Сначала добавьте #include <cmath>
затем вы можете использовать метод pow
в вашем коде, например:
pow(3.5, 3);
Какой 3,5 является базовым, а 3 - эксп