double.parse în Dart

Numere (int, double, num, BigInt) Dart 1.0 (tryParse: Dart 2.0)

Transformă un text în număr cu zecimale; parse aruncă FormatException, tryParse returnează null.

Sintaxă
static double parse(String source)
static double? tryParse(String source)

Ce face double.parse

double.parse('9.75') dă numărul 9.75. Acceptă și întregi ('7' → 7.0), notația științifică ('1.5e3'), precum și textele 'NaN', 'Infinity' și '-Infinity'. Spațiile de la margini sunt ignorate.

Separatorul zecimal trebuie să fie punctul. Textul '9,75', scris românește, nu este valid: parse aruncă FormatException, iar tryParse returnează null. Înlocuiește virgula cu punct înainte de conversie.

Parametri

Parametru Descriere
source Textul de transformat.

Ce returnează

parse: un double. tryParse: un double?.

Exemple

Exemplul 1: Conversii reușite și eșuate

void main() {
  print(double.parse('9.75'));
  print(double.parse(' 7 '));
  print(double.parse('1.5e3'));
  print(double.parse('-Infinity'));
  print(double.tryParse('9,75'));
  print(double.tryParse('9,75'.replaceAll(',', '.')));
  try {
    double.parse('abc');
  } on FormatException catch (e) {
    print(e.message);
  }
}

Rezultat

9.75
7.0
1500.0
-Infinity
null
9.75
Invalid double

Exemplul 2: Media notelor citite de la tastatură

import 'dart:io';

void main() {
  var linie = stdin.readLineSync() ?? '';
  var note = <double>[];
  for (var bucata in linie.split(' ')) {
    var nota = double.tryParse(bucata.replaceAll(',', '.'));
    if (nota == null) {
      print('Ignor „$bucata”');
    } else {
      note.add(nota);
    }
  }
  var media = note.reduce((a, b) => a + b) / note.length;
  print('Note: $note');
  print('Media: ${media.toStringAsFixed(2)}');
}

Ce scrie utilizatorul (intrare)

9,5 8 10 nota 7.5

Rezultat

Ignor „nota”
Note: [9.5, 8.0, 10.0, 7.5]
Media: 8.75

Greșeli frecvente

  • Citești '12,50' de la un utilizator român și folosești double.parse: aruncă eroare. Înlocuiește întâi virgula cu punct.
  • Folosești double.parse când textul poate fi orice: preferă tryParse și tratează null.

Comenzi înrudite

  • int.parse: Transformă un text în număr întreg; parse aruncă FormatException la text greșit, tryParse returnează null.
  • num.parse: Transformă un text în int sau double, după cum arată textul; tryParse returnează null la text greșit.
  • double: Tipul pentru numere cu zecimale (virgulă mobilă, 64 de biți): prețuri, medii, temperaturi.
  • FormatException: Excepția aruncată când un text nu are formatul așteptat (int.parse(‘abc’), JSON greșit, dată invalidă).