double.infinity în Dart

Valoarea „infinit” pentru double; isInfinite și isFinite verifică dacă un număr este infinit sau finit.

Sintaxă
static const double infinity = 1.0 / 0.0
bool get isInfinite
bool get isFinite

Ce face double.infinity

double.infinity este o valoare specială, mai mare decât orice număr. O obții și împărțind un număr pozitiv la 0.0 sau când un calcul depășește double.maxFinite. Există și double.negativeInfinity.

isInfinite este true pentru +∞ și −∞. isFinite (definit în num) este true pentru numerele obișnuite și false pentru infinit și pentru NaN. De aceea isFinite este verificarea cea mai sigură înainte să afișezi sau să rotunjești un rezultat.

double.infinity este util ca valoare de start când cauți un minim: orice număr real va fi mai mic. În Flutter îl vezi des la lățimi: width: double.infinity înseamnă „cât de lat se poate”.

Ce returnează

isInfinite, isFinite: un bool.

Exemple

Exemplul 1: De unde apare infinitul

void main() {
  print(1 / 0);
  print(-1 / 0);
  print(double.maxFinite * 10);
  print(double.infinity > 1e308);
  for (var x in [3.5, 1 / 0, 0 / 0]) {
    print('$x: isInfinite=${x.isInfinite}, isFinite=${x.isFinite}');
  }
}

Rezultat

Infinity
-Infinity
Infinity
true
3.5: isInfinite=false, isFinite=true
Infinity: isInfinite=true, isFinite=false
NaN: isInfinite=false, isFinite=false

Exemplul 2: Minimul unei liste

void main() {
  var temperaturi = {'Iași': -4.5, 'Cluj': -2.0, 'Constanța': 3.5};
  var minim = double.infinity;
  var orasRece = '';
  temperaturi.forEach((oras, t) {
    if (t < minim) {
      minim = t;
      orasRece = oras;
    }
  });
  print('Cel mai frig: $orasRece ($minim °C)');
  var media = 0 / 0;
  print(media.isFinite ? media : 'nu există date');
}

Rezultat

Cel mai frig: Iași (-4.5 °C)
nu există date

Greșeli frecvente

  • Apelezi .round() sau .toInt() pe un rezultat infinit: aruncă UnsupportedError. Verifică întâi isFinite.
  • Te aștepți ca 5 ~/ 0 să dea infinit. Împărțirea întreagă la zero aruncă UnsupportedError; doar / dă infinit.

Comenzi înrudite

  • double.nan: NaN („Not a Number”) este rezultatul unui calcul fără sens, ca 0/0; isNaN îl detectează.
  • 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.