为什么自己实现一个pow()函数呢?昨天在Linux操作系统中调用这一个函数时,一直报错,也没有查找到具体的原因。故心血来潮实现这一函数功能。
函数所在头文件:
在"math.h"头文件中
函数原型
-
1 double pow (doublebase,double exponent);
函数功能
求base的exponent幂,即求某个数的多少次幂
函数参数
base :基数(double类型)
exponent :幂值,即进行多少次幂的值
函数返回值
如果成功执行,返回求得某个数的多少次幂的值;否则,返回错误。
实例一:pow()函数简单使用
-
1 #include<stdio.h> 2 #include<math.h> 3 4 int main(void) 5 { 6 double value1 = pow(2.0,3.0); 7 printf("value1 = %f ", value1); 8 9 double value2 = pow(2.22,3.0); 10 printf("value2 = %f ", value2); 11 12 double value3 = pow(5.21,4.11); 13 printf("value3 = %f ", value3); 14 15 return0; 16 }
运行结果:
实例二:pow()函数实现代码
-
1 #include<stdio.h> 2 #include<math.h> 3 //实现pow()函数 4 double mypow(double num,double n) 5 { 6 double value =1; 7 int i =1; 8 if(n ==0) 9 { 10 value =1; 11 } 12 else 13 { 14 while(i++<= n) 15 { 16 value *= num; 17 } 18 } 19 return value; 20 } 21 22 int main(void) 23 { 24 double value1 = mypow(2.0,3.0); 25 printf("value1 = %f ", value1); 26 27 double value2 = mypow(2.22,3.0); 28 printf("value2 = %f ", value2); 29 30 double value3 = mypow(5.21,4.11); 31 printf("value3 = %f ", value3); 32 33 return0; 34 }
运行结果
操作注意:
可能导致错误的情况:
- 如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
- 如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
- 如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
- 如果返回值 ret 太大或者太小,将会导致 range error 错误。
在使用"math.h"头文件里面的库函数时,在Linux系统上进行GCC编译时,需要在命令后面加上"-lm"(链接库函数的文件);否则会报错。