Java 負數模計算
在 Java 中,模運算子 (%) 計算除法後的餘數。然而,模數計算中負數的處理可能會令人困惑。
問題
使用者遇到了「-13 % 64」結果的差異Java,期望結果為 51,但得到的是 -13。他們質疑他們的模數實現是否不正確。
解釋
Java 遵循負數模數的數學定義,這可能與其他程式語言不同。大多數情況下,負數的模定義為:
a % b = a - (floor(a / b) * b)
例如,在「-13 % 64」的情況下:
-13 - (floor(-13 / 64) * 64) = -13 - (-1 * 64) = -13 + 64 = -13
可能解決方案
可能解決方案<code class="java">int r = x % n; if (r > 0 && x < 0) { r -= n; }</code>
<code class="java">int r = x % n; if (r < 0) { r += n; }</code>可能解決方案如果對於負數輸入想要的結果是正數,則可以透過以下修改獲得:反之,如果對於負數輸入想要的結果是負數負輸入,可以使用以下修改:這些修改根據輸入的符號和所需結果調整結果。
以上是為什麼 Java 的模運算子對負數產生負結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!