DEV Community

Cover image for Class C# Siap Pakai untuk Konversi Angka menjadi Terbilang
ahoNerd
ahoNerd

Posted on • Edited on • Originally published at ahonerd.com

1

Class C# Siap Pakai untuk Konversi Angka menjadi Terbilang

Pada catatan kali ini akan kita bahas mengenai contoh class siap pakai pada C# yang memiliki fitur konversi dari angka menjadi string terbilang melalui akses index.

Class Terbilang

using System;
namespace ahoNerd
{
class Terbilang
{
readonly string[] data = { "", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas" };
private bool minus = false;
public string this[long angka] => CariIndexAngka(angka);
private string CariIndexAngka(long angka)
{
string nilaiReturn;
if (angka < 0)
{
minus = true;
long abs = Math.Abs(angka);
string coba = CariIndexAngka(abs);
nilaiReturn = coba == string.Empty ? $"-{CariIndexAngka(abs)}" : $"minus {coba}";
}
else if (angka == 0)
{
nilaiReturn = "nol";
}
else if (angka < 12)
{
nilaiReturn = data[angka];
}
else if (angka < 20)
{
nilaiReturn = data[angka - 10] + " belas";
}
else if (angka < 100)
{
nilaiReturn = Olah(angka, 10, "puluh");
}
else if (angka < 200)
{
nilaiReturn = "seratus " + CariIndexAngka(angka - 100);
}
// ~ 999
else if (angka < 1000)
{
nilaiReturn = Olah(angka, 100, "ratus");
}
// ~ 1,999
else if (angka < 2000)
{
nilaiReturn = "seribu " + CariIndexAngka(angka - 1000);
}
// ~ 9,999
else if (angka < 10000)
{
nilaiReturn = Olah(angka, 1000, "ribu");
}
// ~ 99,999
else if (angka < 100000)
{
nilaiReturn = Olah(angka, 1000, "ribu", 2);
}
// ~ 999,999
else if (angka < 1000000)
{
nilaiReturn = Olah(angka, 1000, "ribu", 3);
}
// ~ 9,999,999
else if (angka < 10000000)
{
nilaiReturn = Olah(angka, 1000000, "juta");
}
// ~ 99,999,999
else if (angka < 100000000)
{
nilaiReturn = Olah(angka, 1000000, "juta", 2);
}
// ~ 999,999,999
else if (angka < 1000000000)
{
nilaiReturn = Olah(angka, 1000000, "juta", 3);
}
// ~ 9,999,999,999
else if (angka < 10000000000)
{
nilaiReturn = Olah(angka, 1000000000, "milyar");
}
// ~ 99,999,999,999
else if (angka < 100000000000)
{
nilaiReturn = Olah(angka, 1000000000, "milyar", 2);
}
// ~ 999,999,999,999
else if (angka < 1000000000000)
{
nilaiReturn = Olah(angka, 1000000000, "milyar", 3);
}
// ~ 9,999,999,999,999
else if (angka < 10000000000000)
{
nilaiReturn = Olah(angka, 1000000000000, "triliun");
}
// ~ 99,999,999,999,999
else if (angka < 100000000000000)
{
nilaiReturn = Olah(angka, 1000000000000, "triliun", 2);
}
// ~ 999,999,999,999,999
else if (angka < 1000000000000000)
{
nilaiReturn = Olah(angka, 1000000000000, "triliun", 3);
}
// ~ 9,999,999,999,999,999
else if (angka < 10000000000000000)
{
nilaiReturn = Olah(angka, 1000000000000000, "kuadriliun");
}
// ~ 99,999,999,999,999,999
else if (angka < 100000000000000000)
{
nilaiReturn = Olah(angka, 1000000000000000, "kuadriliun", 2);
}
else
{
if (minus)
{
nilaiReturn = string.Empty;
}
else
{
nilaiReturn = $"{angka} di luar range";
}
}
minus = false;
return nilaiReturn;
}
string Olah(long a, long p, string konversi, int sub = 1)
{
long utama = a / (sub == 2 ? Convert.ToInt64(p * 0.1) : p);
int depan = Convert.ToInt32(utama.ToString().Substring(0, sub));
long belakang = a % p;
return $"{CariIndexAngka(depan)} {konversi} {(belakang == 0 ? data[belakang] : CariIndexAngka(belakang))}";
}
}
}
view raw terbilang.cs hosted with ❤ by GitHub

Contoh penggunaan pada program

Berikut ini contoh bagaimana mengkonsumsi class di atas dari program yang kita buat:

using System;
namespace ahoNerd
{
internal class Program
{
static void Main(string[] args)
{
Terbilang terbilang = new Terbilang();
Console.WriteLine(terbilang[11991199119911991]);
}
}
}
view raw main.cs hosted with ❤ by GitHub

Pastikan namespace pada class sama dengan namespace pada program.

Output

Output berikut ini dihasilkan dengan menjalankan program di atas pada Visual Studio Comunity 2022 dengan menggunakan template Console App (.Net Framework)

Terminal output

Try It Yourself

onlinegdb

onlinegdb.com/RboCahEiZ.

Replit

GitHub Gist

Code di atas dapat di-clone dari gist ahoNerd di gist.github.com/ahoNerd.

Reference

learn.microsoft.com

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay