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中文網其他相關文章!