为什么CoffeeScript使用%%作为模运算符而不是标准的JavaScript运算符%?

19
CoffeeScript操作符文档中说,你可以使用%%进行真正的数学取模,但没有解释为什么这与JavaScript中的“取模运算符”%不同。
文档进一步指出,在CoffeeScript中a %% b相当于在JavaScript中写(a % b + b) % b,但对于大多数简单情况,它们似乎产生相同的结果。
2个回答

30

2
一开始对我来说没有任何意义,因此我认为需要一个示例。
check = (a,b) ->
  c = (b*Math.floor(a/b)) + a%b
  d = (b*Math.floor(a/b)) + a%%b
  console.log(
    [c, c == a]
    [d, d == a]
  )

check  78, 33 # [ 78, true ] [ 78, true ]
check -78, 33 # [ -111, false ] [ -78, true ]

###
 78 mod 33 = 12
-78 mod 33 = 21

check:  78 = 33 *  2 + 12
check: -78 = 33 * -3 + 21
###

看起来取模是一种数学技巧,可以使用一个公式来处理所有数字,而不是分别对待正数和负数。不知道它是否仅仅是一个技巧,还是有某种内在的意义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接