2016-05-13 47 views

risposta

7

esempio di Clojuredoc per rem descrive la differenza:

;; rem and mod are commonly used to get the remainder. 
;; mod means Gaussian mod, so the result is always 
;; non-negative. Don't confuse it with ANSI C's % 
;; operator, which despite being pronounced 
;; 'mod' actually implements rem, i.e. -10 % 3 = -1. 

user=> (mod -10 3) 
2 

user=> (rem -10 3) 
-1 
9

mod restituisce la differenza del primo numero, e il più grande intero (forse negativo) multiplo del secondo numero che è inferiore al primo numero :
rem è solo il resto.

Per esempio (rem -4 3) => -1 non c'è da sorprendersi: -4 diviso per 3 è -1 con -1 "rimasto".
Ma stranezza succede se usiamo mod: (mod -4 3) => 2:

  • il più grande intero multiplo di 3 minore di -4 è -6.
  • -4 -6 meno è 2.

Quindi, anche se di solito agiscono in modo simile, mod non non restituire il resto, si fa qualcosa di più specifico.

You might find these clojuredocs examples helpful.