int.toString în Dart

toString() transformă numărul în text; toStringAsFixed(n) îl scrie cu exact n zecimale.

Sintaxă
String toString()
String toStringAsFixed(int fractionDigits)

Ce face int.toString

toString() transformă un număr în text: 42.toString() este '42'. Ai nevoie de el când lipești numărul de alt text cu + sau când o funcție cere un String. În interpolare ('$n lei') este apelat automat.

toStringAsFixed(n) scrie numărul cu exact n zecimale, rotunjind: 3.14159.toStringAsFixed(2) este '3.14'. Pe un int adaugă zerourile: 5.toStringAsFixed(2) este '5.00'. n poate fi între 0 și 20.

Separatorul zecimal este mereu punctul. Pentru formatul românesc (12,50 lei) înlocuiește punctul cu replaceAll sau folosește pachetul intl.

Parametri

Parametru Descriere
fractionDigits Numărul de zecimale (0–20).

Ce returnează

Un String.

Exemple

Exemplul 1: Numere în text

void main() {
  var bucati = 3;
  var text = 'Ai cumpărat ' + bucati.toString() + ' caiete';
  print(text);
  print(5.toStringAsFixed(2));
  print(2.675.toStringAsFixed(2));
  print((10 / 3).toStringAsFixed(3));
  print(1234.5.toStringAsFixed(0));
}

Rezultat

Ai cumpărat 3 caiete
5.00
2.67
3.333
1235

Exemplul 2: Bon de cumpărături cu prețuri în format românesc

Formatăm cu două zecimale și înlocuim punctul cu virgula.

String lei(num suma) => '${suma.toStringAsFixed(2).replaceAll('.', ',')} lei';

void main() {
  var produse = {'pâine': 4.5, 'lapte': 7.25, 'ouă (10)': 12};
  num total = 0;
  produse.forEach((nume, pret) {
    print('${nume.padRight(10)} ${lei(pret)}');
    total += pret;
  });
  print('TOTAL      ${lei(total)}');
}

Rezultat

pâine      4,50 lei
lapte      7,25 lei
ouă (10)   12,00 lei
TOTAL      23,75 lei

Greșeli frecvente

  • Te aștepți ca 2.675.toStringAsFixed(2) să dea 2.68. Dă 2.67, pentru că 2.675 nu poate fi ținut exact în binar. Pentru bani, ține sumele în bani (întregi): 1250 în loc de 12.50.
  • Folosești toStringAsFixed și apoi faci calcule cu rezultatul. Rezultatul este text; calculează întâi, formatează doar la afișare.

Comenzi înrudite

  • int.toRadixString: toRadixString scrie numărul în altă bază (binar, hexazecimal); bitLength spune câți biți îi trebuie.
  • double.toStringAsPrecision: Scrie numărul ca text cu un număr dat de cifre semnificative (nu de zecimale).
  • int.parse: Transformă un text în număr întreg; parse aruncă FormatException la text greșit, tryParse returnează null.
  • String.padLeft: Completează textul în stânga (padLeft) sau în dreapta (padRight) până ajunge la o lungime dată.