捨入到最接近的倍數:C 語言的綜合分析
將一個數字捨入到另一個數字最接近的倍數的任務是程式設計中常見的一種。在本文中,我們將探索在 C 中完成此任務的最佳方法。
原始實作
常用的一種方法是:
int roundUp(int numToRound, int multiple) { if (multiple == 0) { return numToRound; } int roundDown = ((int)(numToRound) / multiple) * multiple; int roundUp = roundDown + multiple; int roundCalc = roundUp; return (roundCalc); }
雖然這個實作看起來很簡單,但它有限制:
改良的解
更好的方法是使用模運算子來計算餘數。若餘數不為零,則將餘數與原數的倍數之差相加,進行四捨五入。
int roundUp(int numToRound, int multiple) { if (multiple == 0) { return numToRound; } int remainder = numToRound % multiple; if (remainder == 0) { return numToRound; } return numToRound + multiple - remainder; }
負數的情況
根據負數「up」的解釋,該函數的負版本可能是必要的。
int roundUp(int numToRound, int multiple) { if (multiple == 0) { return numToRound; } int remainder = abs(numToRound) % multiple; if (remainder == 0) { return numToRound; } if (numToRound < 0) { return -(abs(numToRound) - remainder); } else { return numToRound + multiple - remainder; } }
此實作透過考慮輸入的符號來正確處理正數和負數。它還使用整數運算,使其高效且準確。
以上是如何在 C 中有效地舍入到最接近的倍數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!