pow函式(數學次方)在c語言的用法,兩種編寫方法例項( 計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值)
關於c語言裡面pow函式,下面借鑑了某位博主的一篇文章:
標頭檔案:#include <math.h>
pow() 函式用來求 x 的 y 次冪(次方),x、y及函式值都是double型 ,其原型為:
double pow(double x, double y);pow()用來計算以x 為底的 y 次方值,然後將結果返回。設返回值為 ret,則 ret = xy。
可能導致錯誤的情況:
如果底數 x 為負數並且指數 y 不是整數,將會導致 domain error 錯誤。
如果底數 x 和指數 y 都是 0,可能會導致 domain error 錯誤,也可能沒有;這跟庫的實現有關。
如果底數 x 是 0,指數 y 是負數,可能會導致 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實現有關。
如果返回值 ret 太大或者太小,將會導致 range error 錯誤。錯誤程式碼:
如果發生 domain error 錯誤,那麼全域性變數 errno 將被設定為 EDOM;
如果發生 pole error 或 range error 錯誤,那麼全域性變數 errno 將被設定為 ERANGE。
Math.pow(底數,幾次方)
如:double a=2.0;
double b=3.0;
double c=Math.pow(a,b);
就是2的三次方是多少;
c最終為8.0;
---------------------
作者:yuanbo_shaw
來源:CSDNanbo_shaw/article/details/79511132
下面做了一道例題,
計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
我分別用了兩種方法計算,第一種比較簡單用了兩個for迴圈,第二個採用pow函式,用了一個for迴圈:
第一個程式:
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main()4 { 5 //將分成兩部分進行 6 int i; 7 double j = 0.0, k = 0.0; 8 int a; 9 double b = 0.0, c = 0.0; 10 double d; 11 for (i = 1; i <= 50; i++){ 12 j =1.0/ (2.0 * i - 1.0); 13 k = k + j; 14 15 } 16 for (a = 1; a <= 50; a++){ 17 b = -1.0/(2.0 * a); 18 c = c + b; 19 20 } 21 d = k + c; 22 printf("%f\n", d); 23 system("pause"); 24 return 0; 25 }
第二個程式:
1 #include<stdio.h> 2 #include<math.h> 3 #include<stdlib.h> 4 int main() 5 { 6 int i; 7 double sum = 0.0, temp = 0.0; 8 for (i = 1; i <= 100; i++) 9 { 10 temp = pow(-1, i + 1); 11 sum = sum + temp * 1 / i; 12 } 13 printf("sum is %f\n", sum); 14 system("pause"); 15 return 0; 16 }
執行結果一樣,也是0.688172.