pow()是否适用于C中的int数据类型? [重复]

问题描述 投票:14回答:4

我只是写一个程序来计算整数的幂。但是产量却不及预期。它适用于所有整数,除了5的幂]。

我的代码是:

#include <stdio.h>
#include <math.h>

int main(void)
{
  int a,b;
  printf("Enter the number.");
  scanf("\n%d",&a);
  b=pow(a,2);
  printf("\n%d",b);
}

输出是这样的:

"Enter the number. 2
 4
"Enter the number. 5
 24
"Enter the number. 4
 16
"Enter the number. 10
 99

我们不能将pow()函数用于int数据类型吗?

我只是写一个程序来计算整数的幂。但是产量却不及预期。它适用于除5的幂以外的所有整数。我的代码是:#include <...>

c pow exponentiation
4个回答
17
投票

浮点精度在这里发挥作用。 pow的实际工作是使用log

pow(a, 2) ==> exp(log(a) * 2)

4
投票

没有基于int的战俘。您正在遭受的是浮点截断。


3
投票

printf("%a", pow(10, 2)),看看你会得到什么;我希望您会看到您没有quit


2
投票

C库函数double pow(double x,double y)

© www.soinside.com 2019 - 2024. All rights reserved.