首頁 > 後端開發 > C++ > 如何確保整數除法始終向上捨入?

如何確保整數除法始終向上捨入?

Susan Sarandon
發布: 2025-01-20 09:11:08
原創
241 人瀏覽過

How Can We Ensure Integer Division Always Rounds Up?

整數除法向上取整的可靠方法

整數除法預設會向零取整,這會導致問題。為了確保始終向上取整,我們需要更好的解決方案。

文中提供的範例中,將操作數轉換為雙精度浮點數並使用Math.Ceiling()是一種可行的變通方法,但這被認為是不規範且低效的。

我們推薦以下方法:

1. 明確定義規範

  • 辨識並定義所有可能的輸入場景。
  • 指定每個場景下的預期行為。
  • 包含針對零除法和整數溢位的錯誤處理。

2. 設計可測試的演算法

  • 將問題分解成更小的步驟:

    • 計算整數商。
    • 判斷除法是否整除(無餘數)。
    • 檢查操作數的符號以決定舍入方向。

3. 實現解決方案

以下是一個範例實作:

<code class="language-java">public static int DivRoundUp(int dividend, int divisor) {
    if (divisor == 0) throw new IllegalArgumentException("除数为零");
    if (divisor == -1 && dividend == Integer.MIN_VALUE) throw new ArithmeticException("整数溢出");

    int quotient = dividend / divisor;
    boolean dividedEvenly = (dividend % divisor) == 0;

    if (dividedEvenly)
        return quotient;

    boolean roundedDown = ((divisor > 0) == (dividend > 0));
    return roundedDown ? quotient + 1 : quotient;
}</code>
登入後複製

此演算法符合指定的行為,向上取整所有非整除的除法結果。它還能很好地處理溢出和零除法錯誤。雖然這不是最優雅的解決方案,但它清晰、可測試且正確。

以上是如何確保整數除法始終向上捨入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板