整数の除算が常に切り上げられるようにする方法
この記事は、整数の除算が常に切り上げられるようにする信頼できる方法を見つけることを目的としています。
元のメソッドの見直し
当初の提案は、整数を倍精度浮動小数点数に変換し、Math.Ceiling()
関数を使用して結果を切り上げることでした。このアプローチは機能しているように見えますが、型変換により不必要な複雑さが生じ、精度の問題が発生する可能性があります。
堅牢なソリューション
この問題を解決するために、より包括的で堅牢なソリューションが以下に提供されます:
<code class="language-java">public static int DivRoundUp(int dividend, int divisor) { if (divisor == 0 || (dividend == Integer.MIN_VALUE && divisor == -1)) throw new ArithmeticException("Invalid input"); // 显式处理异常情况 int roundedTowardsZeroQuotient = dividend / divisor; boolean dividedEvenly = (dividend % divisor) == 0; if (dividedEvenly) return roundedTowardsZeroQuotient; boolean wasRoundedDown = ((divisor > 0) == (dividend > 0)); if (wasRoundedDown) return roundedTowardsZeroQuotient + 1; else return roundedTowardsZeroQuotient; }</code>
説明
この関数は、次のような考えられるすべての状況を細心の注意を払って処理します。
重要な考慮事項
これらの原則に従うことで、整数除算用の堅牢で信頼性の高い切り上げコードを開発できます。
以上が整数の除算が常に切り上げられることを保証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。