最も近い倍数への切り上げ: C での包括的な分析
数値を別の数値の最も近い倍数に切り上げるタスクプログラミングではよくあることです。この記事では、C でこのタスクを達成するための最適なアプローチを検討します。
オリジナルの実装
一般的に使用されるメソッドの 1 つは次のとおりです。
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 中国語 Web サイトの他の関連記事を参照してください。