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âiisFinite. - Te aștepți ca
5 ~/ 0să 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.