c語言pow 函式問題,C語言pow 函式問題。

2021-06-26 19:17:00 字數 2005 閱讀 3010

1樓:都城羊谷芹

應該浮點型整型數點面資料丟失造精度準確程式實參a,b,c都整型所warning資料精度丟失

2樓:古爾格

//樓下的說的都對,那我給你提供一個另外的方法的,直接不使用math標頭檔案裡的函式,利用其原理自己編寫一個可以隨意改變型別的函式。

//↓↓↓這是int的。

#include

int pow(int x,int y)

void main()

3樓:匿名使用者

應該可以的,不過如果從浮點型到整型,小數點後面的資料會丟失的,造成精度不準確。你的程式裡實參a,b,c都是整型,所以會有warning,資料精度丟失。

4樓:落花有情

這個是不行的,但你可以強制轉化為int

5樓:

朋友,pow函式的原型是double pow(double x,double y),返回值是double型的x的y次方的值。對於形參x、y,傳入比double型「短」的實參是正常的且不告警。這是因為,c/c++有約定,當一個「短」型值賦給一個「長」型值時,自動將「短」型值提升為「長」型值。

所以你這裡用兩個int型的變數a、b充當pow的實參是完全合理合法的。但是,把pow(a,b)的返回值賦給int型變數c就不完全合法了,因為這是把「長」型值賦給一個「短」型值,會有精度損失,所以系統要提醒你是否出錯了,就要警告。解決辦法當然是把c宣告為double型;但如果邏輯上只需要返回值的整數部分的話也可以c=(int)pow(a,b);。

這樣系統就知道你是有意取整,而不是疏忽,就不會告警了。僅供參考……

6樓:孟羽然

printf("%f\n", pow(2,3));

7樓:sunny鞦韆墜

可以,但是返回值是double 型別,得到的結果不精確,經常會的到的結果相差1

c語言pow函式問題

8樓:丿

pow()函式用來求x的y次冪,x、y及函式值都是double型 ,其原型為:double pow(double x, double y)。

例項**如下:

#include

#include

void main()

double x = 2, y = 10;

printf("%f\n",pow(x, y));

return 0;

擴充套件資料

在呼叫pow函式時,可能導致錯誤的情況:

如果底數 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。

9樓:匿名使用者

一、double型別必須要用%f或%lf輸出,否則會影響到其後的所有變數的值!

二、pow函式返回值型別是double型別,當不需要小數時,且,未超出整數範圍時,可以儲存到int型別中

10樓:匿名使用者

用int儲存pow函式的結果,或者說用int儲存doublue數值,當然是可以的。但要明白,這會造成數值溢位、精度損失這些問題。

你的執行結果不是用或者不用int變數儲存導致的,實際上顯示結果只與呼叫printf這個函式時的引數有關係。建議你仔細瞭解一下printf函式的細節。

C語言函式問題

對於c和c 語言,不管在什麼軟體上除錯執行,都應該這樣做 1.函式 如你的pow 在main 之前定義 比如把你的程式從 int pow 到 return p 放到main之前 的,在main 中可以直接呼叫 就像你那樣做 2.如果pow在main之後才定義 想你做的那樣 的話,在main 呼叫之前...

c語言指標和函式的問題,C語言指標和函式的問題。!

樓主你好。include int main printf 修改前,陣列元素的值 段1 print array a,5 printf 修改後,陣列元素的值 段2 change values a,5,3 print array a,5 return 0 函式功能 修改一位陣列元素的值,規則是 新值 原值...

c語言問題,C語言問題?

include include int main max min i 0 sum i 0 i 1 i 2 i 3 i 4 i 5 i 6 for j 0 j 6 j printf 去掉一個最高分 0.6lf max printf 去掉一個最低分 0.6lf n min printf 該選手最後的得分...