将数字提高到幂的 C 函数是什么?

新手上路,请多包涵

如何将数字提高到幂?

 2^1

2^2

2^3

ETC…

原文由 user98188 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 481
2 个回答

pow() 在 cmath 库中。更多信息 在这里。不要忘记将 #include<cmath> 放在文件的顶部。

原文由 Joey Robert 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题