在 CoffeeScript documentation on operators它说你可以使用 %%
来实现真正的数学模数,但没有解释为什么这与 JavaScript 中的“模运算符”%
不同。
进一步说,CoffeeScript 中的 a %% b
相当于在 JavaScript 中编写 (a % b + b) % b
但这似乎产生相同的结果大多数简单情况的结果。
最佳答案
我确实在另一个 StackOverflow 问答中找到了答案 JavaScript % (modulo) gives a negative result for negative numbers和 I wanted to share it对于像我这样只寻找“CoffeeScript”相关解释的人来说,很难找到正确的答案。
使用 a %% b
编译为 (a % b + b) % b
的原因是对于负数,例如 -5 % 3
,JavaScript 将产生负数 -5 % 3 = -2
,而正确的数学答案应该是 -5 % 3 = 1
。
接受的答案是指 an article on the JavaScript modulo bug这很好地解释了这一点。
关于javascript - 为什么 CoffeeScript 使用 %% 代替标准的 javascript 运算符 % 来表示模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23126440/