如何将数字提高到幂?
2^1
2^2
2^3
ETC…
原文由 user98188 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将数字提高到幂?
2^1
2^2
2^3
ETC…
原文由 user98188 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 cmath、tgmath 或 math.h 库中使用 pow() 函数。
#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;
}
请注意,如果您将输入作为 long double 以外的任何数据类型提供给 power,那么答案将被提升为 double 的答案。也就是说,它将接受输入并将输出加倍。对于 long double 输入,返回类型为 long double。用于更改 int 使用的答案,int c=(int)pow(a,b)
但是,请记住对于某些数字,这可能会导致数字小于正确答案。因此,例如,您必须计算 5^2,然后在某些编译器上,答案可以返回为 24.99999999999。将数据类型更改为 int 时,正确答案将是 24 而不是 25。所以,这样做
int c=(int)(pow(a,b)+0.5)
现在,你的答案将是正确的。此外,对于非常大的数字,将数据类型 double 更改为 long long int 会丢失数据。例如你写
long long int c=(long long int)(pow(a,b)+0.5);
并输入 a=3 和 b=38,那么结果将是 1350851717672992000,而正确答案是 1350851717672992089,这是因为 pow() 函数返回 1.35085e+18,它被提升为 int 作为 1350851717672992000。我建议写一个此类场景的自定义电源功能,例如:-
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;
}
对于大于 long long int 范围的数字,请使用 boost 库或字符串。
原文由 Kartikey Tewari 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
pow() 在 cmath 库中。更多信息 在这里。不要忘记将
#include<cmath>
放在文件的顶部。