C語言之如何求三次方根
C語言求三次方根
前話
說到C語言求根,我們一般會想到用sqrt(x)函數,它的輸入值和返回值都是double型,x取整將會導致編譯器錯誤。但是sqrt(x)隻能求x的二次方根,求x的三次方根要用到pow(x,y)函數。
pow(x,y)聲明在"math.h"頭文件中,和sqrt(x)不同,pow(x,y)的x和y允許取整數值,也可以是double。
錯誤示范
要求x的三次方根,就是求x的1/3次方,一開始,我這樣寫:pow(x,1/3);看看代碼和運行結果。
#include<stdio.h> #include<math.h> int main(){ double a=27, b=1/3; printf("%lf", pow(a, b)); return 0; }
結果是1,也就是x的0次方,為什麼會這樣?
這和計算機的運算有關,還記得老師講過,整形和整形的運算結果隻能是整形,而C語言保留整形的方法不是四舍五入,而是九舍零留;也就是1/3=0.3333…=0
正確的打開方式
要想保留1/3的小數部分,那得這麼寫:pow(x, 1.0/3);看看運行結果。
#include<stdio.h> #include<math.h> int main(){ double a=27, b=1./3; //給1加瞭個小數點,會被認成是浮點型數 printf("%lf", pow(a, b)); return 0; }
計算成功!
延伸
由此包括倒數,負數次方也能夠計算瞭。
#include<stdio.h> #include<math.h> int main(){ double a=27, b=-1./3; //計算27的負三分之一次方,結果應為三分之一 printf("%lf", pow(a, b)); return 0; }
C語言中,開3次方用什麼?
question
: 開平方用 sqrt(), 開三次方用什麼啊?answer
: 開立方也就是求 1/3 次方, 所以可以用pow()函數
example:
#include <stdio.h> #include <math.h> int main() { double a = pow(8, 1.0 / 3); printf("%f\n", a); return 0; }
程序運行結果:
a = 2.000000
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- C++ float、double判斷是否等於0問題
- 帶你深度走入C語言取整以及4種函數
- 程序員都不知道C語言中的這些小細節
- Python與C語言分別解決完全平方數問題
- C語言函數基礎教程分類自定義參數及調用示例詳解