Ce face int
int ține numere întregi: 21, -5, 0, 0xFF (hexazecimal). Pe mașina virtuală Dart și în aplicațiile native are 64 de biți, deci valori între −9 223 372 036 854 775 808 și 9 223 372 036 854 775 807. Când compilezi pentru web, întregii devin numere JavaScript și sunt exacte doar până la 253.
Operațiile de bază: +, -, *, ~/ (împărțire întreagă, rezultat int), % (restul, mereu pozitiv) și /, care dă mereu un double: 7 / 2 este 3.5. Dacă depășești limita de 64 de biți, valoarea „se întoarce” (overflow) fără eroare; pentru numere uriașe folosește BigInt.
Proprietatea isNegative spune dacă numărul este mai mic decât zero. int moștenește din num și metodele comune cu double (abs, clamp, compareTo, toString).
Ce returnează
isNegative: true pentru numere mai mici ca 0.
Exemple
Exemplul 1: Operații cu întregi
Observă diferența dintre / (rezultat double) și ~/ (rezultat int).
void main() {
int mere = 17;
int copii = 5;
print(mere ~/ copii);
print(mere % copii);
print(mere / copii);
print(0xFF);
print(1000000 * 1000);
print((-3).isNegative);
print(0.isNegative);
}
Rezultat
3
2
3.4
255
1000000000
true
false
Exemplul 2: Limitele lui int pe 64 de biți
Adunarea peste valoarea maximă trece la cea minimă (overflow), fără nicio eroare.
void main() {
var maxim = 9223372036854775807;
print(maxim);
print(maxim + 1);
print(maxim.bitLength);
}
Rezultat
9223372036854775807
-9223372036854775808
63
Greșeli frecvente
- Scrii
int medie = suma / 3;. Operatorul/dă undouble, iar codul nu compilează. Foloseștesuma ~/ 3sau declarădouble. - Te aștepți la o eroare la overflow. Dart nu verifică depășirea pentru
int; pentru sume foarte mari foloseșteBigInt.
Comenzi înrudite
int.parse: Transformă un text în număr întreg; parse aruncă FormatException la text greșit, tryParse returnează null.int.isEven: Spune dacă un întreg este par (isEven) sau impar (isOdd).double: Tipul pentru numere cu zecimale (virgulă mobilă, 64 de biți): prețuri, medii, temperaturi.num: Tipul comun pentru int și double: o variabilă num poate ține orice număr.BigInt: Numere întregi oricât de mari, fără depășire; BigInt.from transformă un int, BigInt.one este valoarea 1.