int.remainder în Dart

Restul împărțirii, cu semnul deîmpărțitului; diferă de % la numere negative.

Sintaxă
int remainder(num other)

Ce face int.remainder

a.remainder(b) dă restul împărțirii lui a la b, calculat ca a - (a ~/ b) * b. Rezultatul are semnul lui a: (-7).remainder(3) este -1.

Operatorul % dă mereu un rest pozitiv (modulo euclidian): -7 % 3 este 2. Pentru numere pozitive cele două sunt identice. Alege % pentru „ciclic” (ziua săptămânii, poziția în listă) și remainder când vrei comportamentul din C sau Java.

Parametri

Parametru Descriere
other Împărțitorul. Dacă este 0 (întreg), aruncă UnsupportedError.

Ce returnează

Un int (sau double, dacă other este double).

Exemple

Exemplul 1: remainder față de %

void main() {
  for (var (a, b) in [(7, 3), (-7, 3), (7, -3), (-7, -3)]) {
    print('$a și $b: remainder=${a.remainder(b)}, %=${a % b}');
  }
  print(7.5.remainder(2));
}

Rezultat

7 și 3: remainder=1, %=1
-7 și 3: remainder=-1, %=2
7 și -3: remainder=1, %=1
-7 și -3: remainder=-1, %=2
1.5

Exemplul 2: Ore și minute dintr-un total de minute

void main() {
  var minute = 135;
  print('${minute ~/ 60} h ${minute.remainder(60)} min');
  var intarziere = -135;
  print('${intarziere ~/ 60} h ${intarziere.remainder(60)} min');
}

Rezultat

2 h 15 min
-2 h -15 min

Greșeli frecvente

  • Folosești remainder pentru a calcula un index ciclic: (i - 1).remainder(n) poate fi negativ și dă RangeError la accesarea listei. Folosește %.

Comenzi înrudite

  • int.isEven: Spune dacă un întreg este par (isEven) sau impar (isOdd).
  • int.gcd: gcd dă cel mai mare divizor comun; modPow calculează (n la puterea e) modulo m, fără depășire.
  • int: Tipul pentru numere întregi (fără zecimale): vârste, cantități, note, indici.