我pow在C中使用該函數(shù)并將返回值存儲為整數(shù)類型。請參見下面的代碼段:for (i = 0; i < 5; i++){ val = (int)pow(5, i); printf("%d, ", val);}在這里i,val是整數(shù),輸出是1, 5, 24, 124, 624。我相信這是因?yàn)楦↑c(diǎn)數(shù)25被視為24.99999 ...在分配給整數(shù)時會四舍五入為24。如果仍然需要將返回值存儲在int中,該如何傳遞呢?
3 回答

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個贊
0.5
在投射到之前添加int
。如果您的系統(tǒng)支持它,則可以調(diào)用C99 round()
函數(shù),但是出于可移植性的原因,我更喜歡避免使用它。

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊
自己實(shí)施戰(zhàn)俘。
int myPow(int base, int exponent) {
int n = 1;
for (int i = 0; i < exponent; i++) {
n *= base;
}
return n;
}
當(dāng)然,這僅處理正指數(shù),并且僅在整數(shù)上起作用,并且當(dāng)然有更有效的方法可以做到這一點(diǎn)。例如,參見Haskell中的來源^。
- 3 回答
- 0 關(guān)注
- 781 瀏覽
添加回答
舉報
0/150
提交
取消