c語言計算為什麼結果不對,c語言計算結果不對 哪裡有問題?

時間 2021-08-30 11:20:57

1樓:匿名使用者

在double轉換成int時,應當考慮到數值並不準確的問題,可以考慮自己要求的精度極限,比如是0.00000001,可以寫成:printf("%d\n",(int)(a/pow(10,b-1)+0.

000000005); 這樣可以配合取整實現在那位上的四捨五入。

2樓:gta小雞

計算整數的冪,不要使用pow函式,它返回的是double型別,轉換成int型別後可能存在誤差。自己編寫一個函式或迴圈實現,很簡單。

3樓:聽不清啊

這是演算法設計上的問題。

一般而言,浮點運算會帶來誤差,不同的編譯器會有不同。

如果浮點運算的結果是5.00000000……就發現不了誤差;而算成了4.9999999999.……後,經(int)就變成了4。

如果寫成a/1000就不會有誤差存在。

也可以自己寫一個intpow()函式。

int intpow(int x,int n)

4樓:飛向夢想飛向未來

這個是因為pow計算的時候精度引起的。比如2.0/2.

0,他的結果理論是1.0,但有些編譯器結果會是0.999999999999999999,這個很接近1了,但是你將這個數取整,結果會是0.

你上面用%lf來列印,會發現一個是5.0000***,一個會是4.999999***x。

5樓:匿名使用者

應該是編譯器的問題。樓主左圖使用的編譯器在資料型別轉換上有一點問題。

6樓:檢憶桖

函式pow(x, y)的功能是計算x的y次冪,其返回值是一個雙精度浮點型資料。當在c語言的編洋程式處理數值運算時,如果算式中出現浮點型資料,為了保證運算的精度,則與該浮點數相運算的其它型別運算元也要先轉為浮點型資料,然後再參與運算。不同版本的編譯軟體生成的操作在進行浮點型資料轉換和運算處理時,演算法不完全一樣,有可能會產生誤差。

在此題目中在,算式a/pow(10,b-1)的運算元a,b雖都是整型數,但運算時要先轉換成浮點型,且產生浮點型運算結果。由於浮點數表示時可能產生誤差,5可能會表示為4.9999999…(對於雙精度浮點數,小數點後面的有效位數可達到15一16位)。

然而,在將其轉換為int型時,只擷取了整數部分,導至出現了4這個結果。

7樓:百香果媽媽輔食

第二張圖是正確的,結果都是5,可能是第一個編譯器有點問題

8樓:匿名使用者

浮點數計算誤差大,計算你可以選python

c語言計算結果不對 **有問題?

9樓:物理公司的

void num的max和main中的max以及min並不是同一個,main中的max和min都是未初始的值。max和min可以定義為全域性或者要把max和min返回去

10樓:

有兩個錯誤的地方,首先是主函式上面,讀取值得scanf中沒有取址符&,所以輸入的數根本沒有讀入記憶體,無法參加運算,其次是主函式的max 和 min你又在num函式中定義了,並且num函式沒有返回值所以計算不對。最後為什麼會輸出這兩個數,是因為輸入的資料沒有取址符,沒有讀入記憶體無法參加運算,所以輸出了兩個隨機數

11樓:

#include

void num(int *a, int n, int *max, int *min)

int *p;

int i = 0;

int j = 0;

*max = a[0];

*min = a[0];

for (p = a; p < a + n; p++)if (*max < *p)

*max = *p;

i = p - a;

if (*min > *p)

*min = *p;

j = p - a;

void main()

int a[10], *p;

int max;

int min;

printf("input:");

for (p = a; p < a + 10; p++)scanf("%d", p);

num(a, 10, &max, &min);

c語言問題結果為什麼是,c語言問題結果為什麼是0???

4 2.0的結果是個double,它佔用8個位元組,double格式的2.0在記憶體中是這樣存放的 00 00 00 00 00 00 00 40 至於為什麼這樣存放,三言兩語數不清楚,你要是感興趣就搜尋ieee754浮點數規則自己看看 double格式2.0的低位4個位元組全是0,而printf的...

用C語言程式設計程式沒有錯誤為什麼結果不對

井鈺 程式可以執行並不表示程式就是正確的 編譯和連線都正確,只能說明編譯器對他進行語法等檢查 沒發現他的錯誤而已,而既然執行結果是錯誤的,那就是說明一點 可能是你的演算法設計的不當,不能正確的解決問題,這樣發生的錯誤 是執行期錯誤,在編譯連線的過程不會出錯的,不過幸好,編譯器也為我們 提供了一些解決...

c語言程式設計計算 ,C語言程式設計計算 1 1 2 1 3 1 4 1 99 1 100 ,直到最後一項的絕對值小於10 4為止

12一 include void main 1.include include include int main else while fabs 1.0 i 0.0001 fabs 求浮點數絕對值函式 return 0 2.include include int main else return 0...