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

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

DDD
DDD原創
2024-11-20 00:52:021019瀏覽

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

JavaScript 模運算子中意外的負結果

在JavaScript 中使用模運算子(%) 計算負數時,可能會產生令人驚訝的結果。例如,Google 計算器中的 (-13) % 64 等於 51,而在 JavaScript 中則傳回 -13。

理解問題

JavaScript 的模運算子計算餘數除法之後,但它不會像谷歌計算器這樣的數學運算那樣對負數應用相同的邏輯。在 JavaScript 中,模運算子傳回一個與第一個運算元具有相同符號的值。

修正問題

要修正此行為並確保與數學運算的一致性,您可以使用以下模運算子的自訂實作:

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

用法

定義自訂模方法後,您可以使用它來計算餘數負數:

console.log((-13).mod(64)); // Outputs 51

此更正後的行為與預期的數學結果一致,並確保不同平台上的行為一致。

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

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