Comment puis-je augmenter un nombre à une puissance?
2^1
2^2
2^3
etc...
pow () dans la bibliothèque cmath. Plus d'infos ici . N'oubliez pas de mettre #include<cmath>
en haut du fichier.
std::pow
dans l'en-tête <cmath>
présente les surcharges suivantes:
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);
Maintenant, vous ne pouvez pas faire
pow(2, N)
avec N étant un int, car il ne sait pas quelle version de float
, double
, ou long double
il devrait prendre, et vous obtiendrez une erreur d’ambiguïté. Tous les trois auraient besoin d'une conversion d'Int en virgule flottante, et tous les trois sont également coûteux!
Par conséquent, assurez-vous de taper le premier argument pour qu'il corresponde parfaitement à l'un de ces trois arguments. J'utilise habituellement double
pow(2.0, N)
Un avocat merde de moi encore. Je suis souvent tombé moi-même dans ce piège, alors je vais vous en avertir.
En C++, l'opérateur "^" est un OU au niveau des bits. Cela ne fonctionne pas pour élever au pouvoir. Le x << n est un décalage à gauche du nombre binaire qui équivaut à multiplier x par 2 n nombre de fois et qui ne peut être utilisé que lors de la montée de 2 à une puissance. La fonction de prisonnier de guerre est une fonction mathématique qui fonctionnera de manière générique.
Utilisez la fonction pow (x, y): voir ici
Incluez simplement math.h et vous êtes tous ensemble.
Vous devriez pouvoir utiliser les méthodes C normales en maths.
#include <cmath>
pow(2,3)
si vous êtes sur un système semblable à Unix, man cmath
Est-ce ce que vous demandez?
Sujal
Bien que pow( base, exp )
soit une excellente suggestion, sachez que cela fonctionne généralement en virgule flottante.
Cela peut être ou ne pas être ce que vous voulez: sur certains systèmes, une simple boucle se multipliant sur un accumulateur sera plus rapide pour les types entiers.
Et pour square spécifiquement, vous pourriez aussi bien multiplier les nombres vous-même, en virgule flottante ou en entier; ce n'est pas vraiment une diminution de la lisibilité (IMHO) et vous évitez la surcharge de performance d'un appel de fonction.
Je n'ai pas assez de réputation pour commenter, mais si vous aimez travailler avec QT, ils ont leur propre version.
#include <QtCore/qmath.h>
qPow(x, y); // returns x raised to the y power.
Ou si vous n'utilisez pas QT, cmath a fondamentalement la même chose.
#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);
}
// définition de la fonction 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);
}
C'est pow ou powf dans <math.h>
Il n'y a pas d'opérateur d'infixe spécial comme dans Visual Basic ou Python
Beaucoup de réponses ont suggéré pow()
ou des alternatives similaires ou leurs propres implémentations. Cependant, étant donné les exemples (2^1
, 2^2
et 2^3
) de votre question, je devinerais s'il vous suffit de lever 2
à une puissance entière. Si tel est le cas, je vous suggère d'utiliser 1 << n
pour 2^n
.
pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)
Le titre de votre question initiale est trompeur. Pour juste carré, utilisez 2*2
.
si vous voulez vous occuper de base_2 alors seulement, je vous recommande d'utiliser l'opérateur de décalage à gauche << à la place de bibliothèque mathématique.
exemple de code:
int exp = 16;
for(int base_2 = 1; base_2 < (1 << exp); (base_2 <<= 1)){
std::cout << base_2 << std::endl;
}
exemple de sortie:
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
Notez que l'utilisation de pow(x,y)
est moins efficace que x*x*x
y fois comme indiqué et que la réponse est donnée ici https://stackoverflow.com/a/2940800/319728 .
Donc, si vous visez l'efficacité, utilisez 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
J'utilise la bibliothèque cmath
ou math.h
pour utiliser les fonctions de la bibliothèque pow()
qui gèrent les pouvoirs
#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;
}
Ajoutez d’abord #include <cmath>
puis vous pouvez utiliser pow
methode dans votre code, par exemple:
pow(3.5, 3);
Qui .5 est base et 3 est exp