首页 >web前端 >js教程 >为什么 JavaScript 的模运算符会产生负数的意外结果?

为什么 JavaScript 的模运算符会产生负数的意外结果?

DDD
DDD原创
2024-11-20 00:52:021066浏览

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