Ce face Int.rem
a % b apelează funcția rem și returnează restul împărțirii lui a la b: 17 % 5 este 2. Pentru numere pozitive, rem și mod dau același rezultat.
Diferența apare la numere negative. rem păstrează semnul lui a: -7 % 3 este -1. mod are semnul lui b, deci pentru un b pozitiv rezultatul este mereu între 0 și b - 1: (-7).mod(3) este 2. Este varianta corectă pentru lucruri „circulare”, ca zilele săptămânii sau orele.
Împărțirea la zero (x % 0) aruncă ArithmeticException pentru întregi.
Parametri
| Parametru | Descriere |
|---|---|
other |
Împărțitorul. |
Ce returnează
Restul împărțirii (Int).
Exemple
Exemplul 1: Par sau impar
Un număr este par dacă restul împărțirii la 2 este 0.
fun main() {
for (n in listOf(4, 7, 10, 13)) {
println("$n este ${if (n % 2 == 0) "par" else "impar"}")
}
println(17.rem(5))
}
Rezultat
4 este par
7 este impar
10 este par
13 este impar
2
Exemplul 2: rem față de mod la numere negative
Pentru -7, rem dă -1, iar mod dă 2.
fun main() {
for (a in listOf(7, -7)) {
println("$a % 3 = ${a % 3}, ($a).mod(3) = ${a.mod(3)}")
}
}
Rezultat
7 % 3 = 1, (7).mod(3) = 1
-7 % 3 = -1, (-7).mod(3) = 2
Exemplul 3: Ziua săptămânii, înainte și înapoi
Cu mod, mersul înapoi în timp rămâne mereu un index valid între 0 și 6.
fun main() {
val zile = listOf("luni", "marți", "miercuri", "joi", "vineri", "sâmbătă", "duminică")
val azi = 2
println("Azi este ${zile[azi]}")
for (deplasare in listOf(1, -3, 9, -10)) {
println("Peste $deplasare zile: ${zile[(azi + deplasare).mod(7)]}")
}
}
Rezultat
Azi este miercuri
Peste 1 zile: joi
Peste -3 zile: duminică
Peste 9 zile: vineri
Peste -10 zile: duminică
Greșeli frecvente
- Folosești
%cu numere negative ca index și primeștiIndexOutOfBoundsExceptionpentru rezultatul negativ. Foloseștemod. - Verifici imparitatea cu
n % 2 == 1. Pentru numere negative restul este -1; scrien % 2 != 0.
Comenzi înrudite
Int.toDouble: Conversii explicite între tipurile numerice: toDouble face un Int zecimal, toInt taie zecimalele unui Double.Int.countOneBits: Numără câți biți de 1 are un număr în scrierea binară (de exemplu 7 = 111 are 3).abs: abs returnează valoarea absolută a unui număr (fără semn); sign spune dacă numărul e negativ, zero sau pozitiv.