Ce face num
num este „părintele” celor două tipuri numerice. O variabilă num poate ține și 5, și 5.5, iar o funcție care primește num acceptă ambele. Toate operațiile comune (+, -, *, /, abs(), round(), clamp(), toStringAsFixed()) sunt definite aici.
Folosește num când valoarea poate fi de ambele feluri, de exemplu suma unor prețuri unele întregi, altele cu zecimale. Când știi tipul exact, preferă int sau double: sunt mai clare și mai rapide. Poți afla tipul real cu is int sau is double.
num este o clasă sealed: nu poți crea alte tipuri numerice care o extind. Pe web, unde toate numerele sunt numere JavaScript, 1.0 is int este true.
Exemple
Exemplul 1: O funcție care primește orice număr
num dublu(num x) => x * 2;
void main() {
print(dublu(4));
print(dublu(4.5));
num total = 0;
for (num pret in [10, 2.5, 7]) {
total += pret;
}
print(total);
print(total is double);
}
Rezultat
8
9.0
19.5
true
Exemplul 2: Verificarea tipului real
String descrie(num n) {
if (n is int) return '$n este întreg';
return '$n are zecimale';
}
void main() {
for (num n in [3, 3.0, 2.75, -1]) {
print(descrie(n));
}
}
Rezultat
3 este întreg
3.0 are zecimale
2.75 are zecimale
-1 este întreg
Greșeli frecvente
- Declari totul
num„ca să fie sigur”. Pierzi verificările de tip: o funcție care cereintnu acceptă unnumfără conversie (toInt()).
Comenzi înrudite
int: Tipul pentru numere întregi (fără zecimale): vârste, cantități, note, indici.double: Tipul pentru numere cu zecimale (virgulă mobilă, 64 de biți): prețuri, medii, temperaturi.num.parse: Transformă un text în int sau double, după cum arată textul; tryParse returnează null la text greșit.double.toInt: toInt() transformă un număr în int tăind zecimalele; toDouble() transformă un int în double.