num în Dart

Tipul comun pentru int și double: o variabilă num poate ține orice număr.

Sintaxă
sealed class num implements Comparable<num>

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 cere int nu acceptă un num fă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.