簡體   English   中英

為什么CoffeeScript使用%%代替模數而不是標准的javascript運算符%

[英]Why does CoffeeScript use %% for modulo instead of the standard javascript operator %

關於運算符CoffeeScript文檔中,它說你可以使用%%作為真正的數學模,但是沒有解釋為什么這與JavaScript中的“模運算符” %不同。

再往下說,CoffeeScript中a %% b相當於在JavaScript中編寫(a % b + b) % b ,但這似乎對大多數簡單情況產生相同的結果。

我確實在另一個StackOverflow問題中找到答案並回答Javascript模數不行為我想分享給那些喜歡我的人只尋找“CoffeeScript”相關的解釋,因此很難找到正確的答案。

使用編譯為(a % b + b) % b a %% b的原因是對於負數,如-5 % 3 ,JavaScript將產生負數-5 % 3 = -2而正確的數學答案應為-5 % 3 = 1

接受的答案是指一篇關於JavaScript模數錯誤的文章,它解釋得很好。

起初對我沒有任何意義,所以我認為它需要一個例子

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
###

看起來modulo是一個數學技巧,能夠為所有數字使用一個公式,而不是一個用於負數,第二個用於正數。 不知道它不僅僅是一個技巧,而且具有一些內在意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM