Ce face Formatarea numerelor și string.Format
Același format funcționează în trei locuri: valoare.ToString("N2"), string.Format("{0:N2}", valoare) și $"{valoare:N2}". Specificatorii uzuali: N (cu separator de mii), F (zecimale fixe), D (întregi completați cu zerouri), X (hexazecimal), E (exponențial), urmați de numărul de cifre. Formatele personalizate folosesc 0 și #: "0.00", "#,##0".
După virgulă, în acolade, vine alinierea: {0,8} aliniază la dreapta pe 8 caractere, {0,-8} la stânga. Așa se fac tabele simple în consolă.
Separatorul zecimal și cel de mii vin din cultura curentă: în ro-RO 1234,5 se scrie 1.234,50, în cultura invariantă 1,234.50. Pentru fișiere și API-uri folosește CultureInfo.InvariantCulture; pentru afișare către utilizator, cultura lui.
Parametri
| Parametru | Descriere |
|---|---|
N2 |
Număr cu separator de mii și 2 zecimale. |
F1 |
Număr cu exact o zecimală, fără separator de mii. |
D5 |
Întreg pe cel puțin 5 cifre, completat cu zerouri. |
X / x |
Hexazecimal cu litere mari / mici. |
{0,-8} |
Aliniere la stânga pe 8 caractere; fără minus, la dreapta. |
Exemple
Exemplul 1: Specificatori de format în cultura ro-RO
using System.Globalization;
CultureInfo.CurrentCulture = new CultureInfo("ro-RO");
decimal pret = 1234.5m;
Console.WriteLine(pret.ToString("N2"));
Console.WriteLine($"{pret:F1}");
Console.WriteLine($"{42:D5}");
Console.WriteLine($"{255:X}");
Console.WriteLine(string.Format("{0} are {1:N0} lei", "Ana", 15000));
Console.WriteLine(pret.ToString("N2", CultureInfo.InvariantCulture));
Rezultat
1.234,50
1234,5
00042
FF
Ana are 15.000 lei
1,234.50
Exemplul 2: Tabel aliniat în consolă
var produse = new[] { ("Pâine", 5), ("Lapte", 8), ("Cafea", 32) };
Console.WriteLine($"{"Produs",-8}|{"Preț",6}");
foreach (var (nume, pret) in produse)
Console.WriteLine($"{nume,-8}|{pret,6}");
Console.WriteLine(string.Format("{0,-8}|{1,6:D3}", "Total", 45));
Rezultat
Produs | Preț
Pâine | 5
Lapte | 8
Cafea | 32
Total | 045
Greșeli frecvente
- Același program afișează
1,234.50pe un server și1.234,50pe altul, pentru că cultura diferă. Dă cultura explicit acolo unde formatul contează. {0:D2}pe undecimalsaudoublearuncăFormatException:Deste doar pentru întregi.- Acoladele literale în
string.Formatse dublează:{{și}}.
Comenzi înrudite
int.Parse și int.TryParse: Transformă text în număr: Parse aruncă excepție la text invalid, TryParse returnează false și nu aruncă.Math (Round, Pow, Sqrt, Clamp): Clasa statică Math: rotunjire, putere, radical, valoare absolută, minim/maxim și limitarea unei valori într-un interval.DateTime: Reprezintă o dată cu oră: creare, adunare de zile și luni, diferențe, formatare și citire din text cu ParseExact.