為什麼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中文網其他相關文章!