Angka menyimpan nilai yang sama di mana pun, tetapi teksnya berbeda antar budaya: culture en-US menulis 1,234,567.89 sedangkan id-ID membalik pemisahnya menjadi 1.234.567,89. Method ToString menerima penentu format standar seperti N (number dengan pemisah) dan C (currency), dan keduanya wajib dipasangkan dengan argumen culture eksplisit bila hasilnya akan dibaca mesin atau disimpan.

Format dan Parse Dua Arah #

csharp
decimal nilai = 1234567.891m;

Console.WriteLine(nilai.ToString("N2", CultureInfo.InvariantCulture));
Console.WriteLine(nilai.ToString("N2", CultureInfo.GetCultureInfo("id-ID")));

decimal dariInvariant = decimal.Parse("1234567.891", CultureInfo.InvariantCulture);
Console.WriteLine(dariInvariant.ToString(CultureInfo.InvariantCulture));

decimal dariId = decimal.Parse("1.234,89", CultureInfo.GetCultureInfo("id-ID"));
Console.WriteLine(dariId.ToString(CultureInfo.InvariantCulture));

Output yang Dihasilkan:

text
1,234,567.89
1.234.567,89
1234567.891
1234.89

Mari kita bedah baris demi baris:

  1. Baris 3 ("N2" ... Invariant): penentu N2 menampilkan dua angka desimal dengan pemisah ribuan koma dan pemisah desimal titik sesuai culture invariant.
  2. Baris 4 ("N2" ... id-ID): nilai decimal yang sama ditulis dengan pemisah terbalik, khas format angka Indonesia.
  3. Baris 6-7 (decimal.Parse ...): teks gaya invariant diurai dengan culture yang sama; method Parse mengembalikan 1234567.891 dan mencetaknya kembali tanpa penentu format.
  4. Baris 9-10 (Parse("1.234,89" ...)): dengan culture id-ID, titik dibaca sebagai pemisah ribuan dan koma sebagai desimal, sehingga hasilnya bernilai 1234.89.

Penentu standar lain melengkapi kebutuhan tampilan: F2 memaksa dua desimal tanpa pemisah ribuan, P menampilkan persentase, dan E memakai notasi ilmiah. Semua penentu tersebut menerima argumen culture dengan pola yang sama seperti contoh N2, sehingga kebiasaan mengirim culture eksplisit berlaku seragam untuk seluruh penentu format angka.