首頁 > 後端開發 > C++ > 為什麼 C 中 `pow(10, 5)` 有時回傳 9999 而不是 10000 ?

為什麼 C 中 `pow(10, 5)` 有時回傳 9999 而不是 10000 ?

Patricia Arquette
發布: 2024-12-27 21:07:16
原創
194 人瀏覽過

Why Does `pow(10, 5)` Sometimes Return 9999 Instead of 10000 in C  ?

為什麼pow(10,5) 在C 中顯示9,999 而不是10,000

在C 中,當使用帶有整數的pow () 函數時輸入和浮點指數,由於浮點數值的表示,可能會出現意外結果。具體來說,pow(10.0, 5) 可能會產生 9999.9999999 或類似值。當將此浮點值指派給整數變數時,它會被截斷。

例如,考慮以下程式碼片段:

const int sections = 10;

for(int t = 0; t < 5; t++){
   int i = pow(sections, 5- t -1);  // <-- pow() with integer base, floating-point exponent
   cout << i << endl;
}
登入後複製

此程式碼的輸出會錯誤顯示:

9999
1000
99
10
1
登入後複製

但是,如果修改程式碼,直接在cout語句中使用pow()函數,預期的結果是獲得:

for(int t = 0; t < 5; t++){
    cout << pow(sections,5-t-1) << endl; // <-- pow() used directly in cout
}
登入後複製

透過此修改,輸出將正確顯示:

10000
1000
100
10
1
登入後複製

出現這種差異是因為在第一個範例中,pow(sections, 5 - t -1)在分配給整數變數時被截斷。然而,在第二個範例中,浮點結果在直接傳遞給 cout 時會進行舍入,從而獲得正確的顯示。

以上是為什麼 C 中 `pow(10, 5)` 有時回傳 9999 而不是 10000 ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板