Mengonversi Bilangan Bulat ke Angka Tertulis di C#
Pernahkah Anda merasa perlu untuk mengubah bilangan bulat ke bentuk tertulisnya? Ini adalah kebutuhan umum dalam berbagai aplikasi, seperti menghasilkan laporan, menulis cek, atau hanya untuk memudahkan pembacaan angka dalam konten teks. Misalnya, Anda mungkin perlu mengonversi angka 21
menjadi "Dua Puluh Satu"
.
Tapi bagaimana jika Anda menginginkan solusi yang tidak bergantung pada tabel pencarian yang besar? Dalam posting blog ini, kita akan menjelajahi metode yang rapi dan efisien dalam C# untuk mengonversi bilangan bulat menjadi angka tertulis.
Masalahnya
Untuk mengonversi bilangan bulat ke bentuk tertulis, banyak pengembang biasanya menggunakan tabel pencarian besar, yang bisa merepotkan dan sulit untuk dipelihara. Sebagai gantinya, kita akan mengeksplorasi solusi yang lebih elegan menggunakan manipulasi string dasar dan rekursi.
Solusinya
Kita dapat mencapai tujuan kita dengan kelas kustom yang menggunakan array untuk mengkategorikan angka dan fungsi rekursif untuk membangun bentuk tertulis secara bertahap. Mari kita uraikan langkah demi langkah.
Kelas HumanFriendlyInteger
Kelas berikut berisi metode untuk mengonversi bilangan bulat menjadi padanan tertulisnya:
public static class HumanFriendlyInteger
{
static string[] ones = new string[] { "", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan" };
static string[] teens = new string[] { "Sepuluh", "Sebelas", "Dua Belas", "Tiga Belas", "Empat Belas", "Lima Belas", "Enam Belas", "Tujuh Belas", "Delapan Belas", "Sembilan Belas" };
static string[] tens = new string[] { "Dua Puluh", "Tiga Puluh", "Empat Puluh", "Lima Puluh", "Enam Puluh", "Tujuh Puluh", "Delapan Puluh", "Sembilan Puluh" };
static string[] thousandsGroups = { "", " Ribu", " Juta", " Miliar" };
private static string FriendlyInteger(int n, string leftDigits, int thousands)
{
// Menangani kasus khusus berdasarkan nilai angka
if (n == 0)
{
return leftDigits;
}
string friendlyInt = leftDigits;
if (friendlyInt.Length > 0)
{
friendlyInt += " ";
}
if (n < 10)
{
friendlyInt += ones[n];
}
else if (n < 20)
{
friendlyInt += teens[n - 10];
}
else if (n < 100)
{
friendlyInt += FriendlyInteger(n % 10, tens[n / 10 - 2], 0);
}
else if (n < 1000)
{
friendlyInt += FriendlyInteger(n % 100, (ones[n / 100] + " Ratus"), 0);
}
else
{
friendlyInt += FriendlyInteger(n % 1000, FriendlyInteger(n / 1000, "", thousands + 1), 0);
if (n % 1000 == 0)
{
return friendlyInt;
}
}
return friendlyInt + thousandsGroups[thousands];
}
public static string IntegerToWritten(int n)
{
if (n == 0)
{
return "Nol";
}
else if (n < 0)
{
return "Negatif " + IntegerToWritten(-n);
}
return FriendlyInteger(n, "", 0);
}
}
Pemecahan Kode
-
Array Statis: Kelas ini menggunakan empat array statis untuk menyimpan bentuk tertulis dari angka:
ones
: Berisi kata untuk angka 1-9.teens
: Berisi kata untuk angka 10-19.tens
: Berisi kata untuk kelipatan sepuluh (20, 30, dll.).thousandsGroups
: Menyimpan kata untuk nilai yang lebih tinggi seperti ribu, juta, dll.
-
Metode FriendlyInteger: Metode rekursif ini membagi angka menjadi bagian-bagian yang dapat dikelola:
- Menangani konstruksi angka berdasarkan ukuran mereka (satuan, puluhan, ratusan, dan ribuan).
- Setiap panggilan secara rekursif membangun representasi string dengan memeriksa kategori mana angka tersebut termasuk.
-
Metode IntegerToWritten: Ini adalah metode publik untuk mengonversi bilangan bulat. Ini menangani angka nol dan negatif sebelum memanggil metode
FriendlyInteger
.
Kesimpulan
Dengan menggunakan metode ini, Anda dapat dengan efisien mengonversi bilangan bulat menjadi bentuk tertulisnya di C#. Solusi ini tidak hanya elegan tetapi juga menghindari kerepotan dalam memelihara tabel pencarian yang luas.
Lain kali Anda perlu menampilkan angka dalam teks, cobalah pendekatan ini, dan nikmati keluaran yang bersih dan ramah pengguna!