Pada bagian sebelumnya kita sudah mempelajari placeholder string beserta dua cara penggunaannya. Selain dua metode ini, C# juga mendukung aturan format yang lebih kompleks.
Sintaks Dasar Placeholder Format
{indeks,penyelarasan:format}
1. index (indeks)
Indeks / variabel interpolasi, wajib diisi
Placeholder angka tradisional: Console.WriteLine(“{0}”, 123); artinya nilai 123 akan dimasukkan ke dalam bagian {0}
Interpolasi string dengan sintaks $"": tulis nama variabel secara langsung tanpa indeks angka, contoh Console.WriteLine($”Tom is {age} years old”)
Contoh kode
int money = 1000;
Console.WriteLine("Nilai asli: {0}", money);
Console.WriteLine("Format mata uang: {0:C}", money);
Console.WriteLine("Mata uang rata kanan lebar 10 karakter: |{0,10:C}|", money);Code language: JavaScript (javascript)
Nilai asli: 1000
Format mata uang: $1,000.00
Mata uang rata kanan lebar 10 karakter: | $1,000.00|
Cara penulisan dengan interpolasi
int money = 500;
Console.WriteLine($"Nilai asli: {money}");
Console.WriteLine($"Format mata uang: {money:C}");
Console.WriteLine($"Mata uang rata kanan lebar 10 karakter: |{money,10:C}|");Code language: JavaScript (javascript)
2. alignment (penyelarasan)
Spesifikasi penyelarasan, opsional, dipisahkan dengan tanda koma ,
Fungsi: mengatur lebar minimal karakter output dan posisi rata kiri/kanan
Contoh: Console.WriteLine(“{0,10}”, 123); // menempati 10 slot karakter, angka rata kanan

Dari hasil output terlihat ada banyak spasi di sebelah kiri angka 123. Angka 10 menandakan total lebar 10 karakter, sehingga ada 7 spasi yang ditambahkan sebelum angka 123 untuk membuatnya rata kanan.
Angka positif: rata kanan, sisa lebar diisi spasi di sebelah kiri Contoh: {0,10} → lebar 10 karakter, angka rata kanan
Angka negatif: rata kiri, sisa lebar diisi spasi di sebelah kanan Contoh: {0,-10} → lebar 10 karakter, angka rata kiri
Mari ubah kode seperti berikut
Console.WriteLine("{0,-10}", 123); // pakai lebar 10 karakter, angka negatif berarti rata kiriCode language: JavaScript (javascript)

Spasi sulit dilihat secara langsung, jadi kita tambahkan garis vertikal sebagai pembatas
Console.WriteLine("|{0,-10}|", 123);
Console.WriteLine("|{0,10}|", 456);Code language: JavaScript (javascript)

Dengan pembatas garis vertikal aturannya jadi jelas: angka 10 adalah lebar tetap 10 karakter, nilai negatif untuk rata kiri, positif untuk rata kanan, bagian yang kosong akan diisi spasi.
Kode yang setara dengan interpolasi string adalah sebagai berikut
int one = 123;
int two = 456;
Console.WriteLine($"|{one,-10}|");
Console.WriteLine($"|{two,-10}|");Code language: JavaScript (javascript)

3. format (spesifikasi format)
Bagian format, opsional, dipisahkan dengan tanda titik dua :
Berfungsi mengatur tampilan angka: mata uang, desimal tetap, notasi ilmiah, heksadesimal dan lainnya
Struktur bagian format :Axx
:harus menempel langsung pada placeholder tanpa spasiA: spesifikasi huruf tunggal (terdapat 9 format standar bawaan, beberapa peka huruf besar/kecil)xx: spesifikasi presisi (opsional, 1–2 digit angka, maknanya berbeda tiap format huruf)
// F4: format desimal tetap, simpan 4 angka di belakang koma
Console.WriteLine("{0:F4}", 12.345678);
// Penulisan setara pakai interpolasi
Console.WriteLine($"{12.345678:F4}");Code language: JavaScript (javascript)

Mari lihat contoh tambahan
double myDouble = 12.345678;
Console.WriteLine("{0,-10:G} -- Format Umum", myDouble); // 12.345678 -- Format Umum
Console.WriteLine("{0,-10} -- Bawaan", myDouble); // 12.345678 -- Bawaan
Console.WriteLine("{0,-10:F4} -- Desimal Tetap", myDouble); // 12.3457 -- Desimal Tetap
Console.WriteLine("{0,-10:C} -- Mata Uang", myDouble); // $12.35 -- Mata Uang
Console.WriteLine("{0,-10:E3} -- Notasi Ilmiah", myDouble);//1.235E+001 -- Notasi Ilmiah
Console.WriteLine("{0,-10:x} -- Bilangan Bulat Heksadesimal", 1194719); // 123adf -- Bilangan Bulat HeksadesimalCode language: JavaScript (javascript)
Tabel 9 Spesifikasi Format Angka Standar
| Kode | Nama | Kegunaan | Makna Presisi | Contoh Output |
|---|---|---|---|---|
| C/c | Currency Mata Uang | Tampilkan simbol mata uang lokal | Jumlah angka desimal | {0:C} 12.5 → $12.50 |
| D/d | Decimal Bilangan Bulat Desimal | Hanya tipe int, tambah nol di depan jika kurang digit | Digit minimal yang ditampilkan | {0:D4} 12 → 0012 |
| F/f | Fixed-point Desimal Tetap | Jumlah desimal tetap | Jumlah digit desimal yang disimpan | {0:F4} 12.345678 →12.3457 |
| G/g | General Format Umum | Otomatis pakai desimal tetap atau notasi ilmiah, format bawaan | Jumlah digit signifikan | {0:G4} 12.345678 →12.35 |
| X/x | Hexadecimal Heksadesimal (beda huruf besar/kecil) | Tampilkan heksadesimal, X huruf besar, x huruf kecil | Digit minimal yang ditampilkan | {0:x} 180026 → 2bf3a |
| N/n | Number Bilangan dengan Pemisah Ribuan | Tambah pemisah tiap tiga digit | Jumlah angka desimal | {0:N2} 12345678.54321 →12,345,678.54 |
| P/p | Percent Persen | Nilai dikali 100 lalu tambah simbol % | Jumlah angka desimal | {0:P2} 0.1221897 →12.22 % |
| R/r | Round-trip Format Pulang Pergi | Bisa dikonversi kembali ke angka asli tanpa hilang presisi | Parameter presisi diabaikan | {0:R} 1234.21897 →1234.21897 |
| E/e | Scientific Notasi Ilmiah (beda huruf besar/kecil) | Tampilan eksponensial, E besar, e kecil | Digit desimal pada mantisa | {0:e4}12.3456789 →1.2346e+001 |
String Format Angka