non riuscivo a capire la differenza tra queste (mod & REM) funzioni 2.Differenza tra mod e rem in Clojure
6
A
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.