Formatowanie stringów – liczby, waluty, daty

Nauczysz się formatować dane w C# – wyświetlać kwoty z walutą, zaokrąglać liczby i prezentować daty w czytelny sposób.

string.Format interpolacja $ waluty DateTime
01

Podstawy formatowania

W C# mamy dwa główne sposoby formatowania tekstu: interpolację stringów (nowsza metoda) i metodę string.Format().

Dane
liczba, data
Format
wzorzec
Wynik
ładny tekst

Interpolacja stringów (zalecana)

Najprostsza metoda – zaczynamy string od znaku $ i wstawiamy zmienne w klamrach {}.

cs/Interpolacja.cs C#
string imie = "Anna";
int wiek = 17;
double srednia = 4.75;

// Interpolacja – znak $ przed cudzysłowem
Console.WriteLine($"Uczeń: {imie}, wiek: {wiek}, średnia: {srednia}");

// Wynik: Uczeń: Anna, wiek: 17, średnia: 4,75
Wskazówka

Interpolacja $"..." to najczęściej używana metoda w nowoczesnym C#. Jest czytelna i łatwa do zrozumienia.

Metoda string.Format()

Starsza metoda – używamy placeholderów {0}, {1}, {2} itd.

cs/StringFormat.cs C#
string imie = "Anna";
int wiek = 17;

// string.Format – numerowane placeholdery
string tekst = string.Format("Uczeń: {0}, wiek: {1}", imie, wiek);

// {0} = pierwszy argument (imie)
// {1} = drugi argument (wiek)

❌ Łączenie plusami

"Wiek: " + wiek + " lat"
Mało czytelne przy wielu zmiennych

✅ Interpolacja

$"Wiek: {wiek} lat"
Czytelne i wygodne

02

Formatowanie liczb

Po zmiennej w klamrach możemy dodać dwukropek i specyfikator formatu, np. {zmienna:F2}.

Zaokrąglanie miejsc po przecinku

Specyfikator F (Fixed-point) określa liczbę miejsc po przecinku:

cs/Zaokraglanie.cs C#
double pi = 3.14159265;
double cena = 19.5;

Console.WriteLine($"Pi = {pi:F2}");      // Pi = 3,14
Console.WriteLine($"Pi = {pi:F4}");      // Pi = 3,1416
Console.WriteLine($"Cena = {cena:F2}");  // Cena = 19,50
Jak to działa?

F2 = Fixed-point z 2 miejscami po przecinku
F0 = zaokrąglenie do liczby całkowitej
F4 = 4 miejsca po przecinku

Separator tysięcy

Specyfikator N (Number) dodaje separatory tysięcy:

cs/SeparatorTysiecy.cs C#
int populacja = 38179800;
double budzet = 1234567.89;

Console.WriteLine($"Ludność: {populacja:N0}");  // 38 179 800
Console.WriteLine($"Budżet: {budzet:N2}");     // 1 234 567,89
SpecyfikatorNazwaPrzykładWynik
F2Fixed-point{3.1:F2}3,10
N0Number{1234:N0}1 234
N2Number{1234.5:N2}1 234,50
E2Naukowy{1234:E2}1,23E+003
03

Waluty i procenty

C# automatycznie dodaje symbol waluty i formatuje procenty na podstawie ustawień systemu.

Formatowanie walutowe – C

Specyfikator C (Currency) dodaje symbol waluty:

cs/Waluta.cs C#
decimal cena = 99.90m;
decimal pensja = 4500.00m;

Console.WriteLine($"Cena: {cena:C}");     // Cena: 99,90 zł
Console.WriteLine($"Pensja: {pensja:C}");  // Pensja: 4 500,00 zł

// Bez groszy:
Console.WriteLine($"Cena: {cena:C0}");    // Cena: 100 zł
Symbol waluty

Symbol waluty (zł, €, $) zależy od ustawień regionalnych systemu Windows. Na polskim systemie będzie „zł”.

Formatowanie procentów – P

Specyfikator P (Percent) mnoży przez 100 i dodaje znak %:

cs/Procenty.cs C#
double rabat = 0.15;      // 15% jako ułamek
double postep = 0.756;    // 75.6%

Console.WriteLine($"Rabat: {rabat:P0}");   // Rabat: 15%
Console.WriteLine($"Postęp: {postep:P1}"); // Postęp: 75,6%
Uwaga

Pamiętaj: P mnoży wartość przez 100! Więc 0.15 staje się 15%, a 0.756 staje się 75,6%.

SpecyfikatorNazwaPrzykładWynik (PL)
CWaluta{99.9:C}99,90 zł
C0Waluta (bez gr){99.9:C0}100 zł
P0Procent{0.15:P0}15%
P2Procent{0.1567:P2}15,67%
04

Formatowanie dat

Typ DateTime ma wiele formatów – od krótkich dat po pełne daty z godziną.

Standardowe formaty dat

cs/FormatDaty.cs C#
DateTime teraz = DateTime.Now;
DateTime urodziny = new DateTime(2007, 5, 15);

// Standardowe formaty:
Console.WriteLine($"Krótka data: {teraz:d}");  // 15.05.2025
Console.WriteLine($"Długa data: {teraz:D}");   // czwartek, 15 maja 2025
Console.WriteLine($"Krótki czas: {teraz:t}"); // 14:30
Console.WriteLine($"Długi czas: {teraz:T}");  // 14:30:45
Console.WriteLine($"Pełna: {teraz:f}");       // czwartek, 15 maja 2025 14:30

Własne formaty dat

Możesz tworzyć własne wzorce używając symboli:

cs/WlasnyFormatDaty.cs C#
DateTime data = new DateTime(2025, 5, 15, 14, 30, 0);

// Własne wzorce:
Console.WriteLine($"{data:dd.MM.yyyy}");       // 15.05.2025
Console.WriteLine($"{data:yyyy-MM-dd}");        // 2025-05-15
Console.WriteLine($"{data:dd/MM/yyyy HH:mm}"); // 15/05/2025 14:30
Console.WriteLine($"{data:dddd, d MMMM}");    // czwartek, 15 maja
SymbolZnaczeniePrzykład
ddDzień (2 cyfry)05, 15, 31
MMMiesiąc (2 cyfry)01, 05, 12
MMMMiesiąc (skrót)sty, maj, gru
MMMMMiesiąc (pełna nazwa)styczeń, maj
yyyyRok (4 cyfry)2025
HHGodzina 24h00-23
mmMinuty00-59
ssSekundy00-59
ddddDzień tygodniaponiedziałek
Zapamiętaj

MM = miesiąc (duże M)
mm = minuty (małe m)
HH = godziny 24h, hh = godziny 12h

Zadanie

Zadanie dla uczniów

Paragon sklepowy

Napisz program konsolowy, który wyświetla paragon zakupów:

  • Pobierz od użytkownika nazwę produktu i cenę (decimal)
  • Pobierz ilość sztuk (int)
  • Oblicz sumę i wyświetl ją w formacie walutowym (:C)
  • Oblicz rabat 10% i wyświetl go z symbolem % (:P0)
  • Na końcu paragonu wyświetl aktualną datę i godzinę w formacie: dd.MM.yyyy HH:mm

Przykładowy wynik:

Wynik w konsoli Output
===== PARAGON =====
Produkt: Kawa mielona
Cena jednostkowa: 24,99 zł
Ilość: 3 szt.
-------------------
Suma: 74,97 zł
Rabat: 10%
Do zapłaty: 67,47 zł
-------------------
Data: 15.05.2025 14:30

⭐ Bonus 1: Dodaj VAT 23% i wyświetl kwotę netto i brutto osobno

⭐⭐ Bonus 2: Pozwól użytkownikowi dodać wiele produktów (pętla) i wyświetl podsumowanie wszystkich