当前位置:  开发笔记 > 编程语言 > 正文

在JavaScript中使用模数(%)运算符的正确方法是什么?

如何解决《在JavaScript中使用模数(%)运算符的正确方法是什么?》经验,为你挑选了1个好方法。

在JavaScript中,%运算符似乎表现得非常奇怪.我尝试了以下方法:

>>> (0 - 11) % 12
-11

为什么它返回-11而不是1(如在Python中)?

我确信我正在做或期待出错,但文档并没有告诉我什么.



1> Jon Skeet..:

它根据语言的指定方式(例如ECMA 262)正确运行,它被称为余数运算符而不是模运算符.从规格:

ECMAScript浮点余数运算的结果由IEEE算法规则决定:

如果任一操作数是NaN,则结果为NaN.

结果的符号等于股息的符号.

如果被除数是无穷大,或除数是零或两者,则结果为NaN.

如果被除数是有限的且除数是无穷大,则结果等于被除数.

如果被除数为零且除数为非零且有限,则结果与被除数相同.

在剩余的情况下,无论是无穷大,也不是零,也不涉及NaN,r来自被除数n和除数的浮点余数d由数学关系定义,r = n - (d * q)其中q只有n/d负数且仅为正数时为负数的整数如果n/d是正数,且其幅度尽可能大而不超过真正的数学商的大小nd.r计算并使用IEEE 754舍入到最近模式舍入到最接近的可表示值.

在你的情况下n/d是负面的,所以结果是负面的.

有关更多详细信息,请参阅有关模数的Wikipedia条目,包括具有结果符号行为的语言列表.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有