首頁 >web前端 >js教程 >為什麼 JavaScript 的模運算子會產生負數的意外結果?

為什麼 JavaScript 的模運算子會產生負數的意外結果?

Patricia Arquette
Patricia Arquette原創
2024-11-26 02:22:12812瀏覽

Why Does JavaScript's Modulus Operator Produce Unexpected Results with Negative Numbers?

JavaScript 的負數模數運算子行為

在 JavaScript 中,模數運算子 (%) 計算的餘數。然而,它對於負被除數值的表現與數學約定和其他程式語言不同。

對負被除數執行模數運算時,JavaScript 傳回負餘數,而數學計算和大多數其他程式語言產生正餘數一。這可以透過以下範例來示範:

  • Google 計算器:(-13) % 64 = 51(預期結果)
  • JavaScript:console.log(-13 % 64) = -13(錯誤結果)

解決問題

為了在JavaScript 中獲得涉及負數的模運算的正確結果,我們可以使用以下自訂函數:

Number.prototype.mod = function (n) {
  "use strict";
  return ((this % n) + n) % n;
};

此函數,當應用於負股息時,確保回傳的餘數為正。例如:

console.log((-13).mod(64)); // Output: 51 (correct result)

以上是為什麼 JavaScript 的模運算子會產生負數的意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn