首頁 > Java > java教程 > 為什麼 Java 的模運算子對負數產生負結果?

為什麼 Java 的模運算子對負數產生負結果?

Mary-Kate Olsen
發布: 2024-10-26 12:33:29
原創
564 人瀏覽過

Why Does Java's Modulus Operator Yield a Negative Result for Negative Numbers?

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

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