Aplikasi penjualan menghitung stok barang, harga satuan, diskon, sampai jumlah pelanggan. Rentang dan presisi setiap kebutuhan berbeda, dan C# menjawabnya dengan delapan tipe bilangan bulat serta tiga tipe bilangan riil. Memilih tipe yang tepat menjaga program hemat memori dan bebas dari hasil hitung yang mengejutkan.
Tipe Bilangan Bulat #
Delapan tipe integer dibedakan oleh ukuran bit dan keberadaan tanda negatif. Tipe berawalan u (unsigned) hanya menampung nol dan bilangan positif:
| Tipe | Ukuran | Rentang |
|---|---|---|
sbyte | 8 bit | -128 sampai 127 |
byte | 8 bit | 0 sampai 255 |
short | 16 bit | -32768 sampai 32767 |
ushort | 16 bit | 0 sampai 65535 |
int | 32 bit | -2147483648 sampai 2147483647 |
uint | 32 bit | 0 sampai 4294967295 |
long | 64 bit | -9223372036854775808 sampai 9223372036854775807 |
ulong | 64 bit | 0 sampai 18446744073709551615 |
Nama-nama di atas adalah alias dari struct .NET: int identik dengan System.Int32, long identik dengan System.Int64. Setiap struct menyediakan properti MaxValue dan MinValue, sehingga batas tipe bisa diperiksa langsung dari kode:
Console.WriteLine(byte.MaxValue);
Console.WriteLine(sbyte.MinValue);
Console.WriteLine(short.MaxValue);
Console.WriteLine(int.MaxValue);
Console.WriteLine(uint.MaxValue);
Console.WriteLine(long.MaxValue);Output yang Dihasilkan:
255
-128
32767
2147483647
4294967295
9223372036854775807Setiap baris output cocok dengan kolom rentang pada tabel; batas tersebut nyata, bukan sekadar catatan. Untuk kebutuhan sehari-hari, int adalah pilihan yang paling sering dipakai.
Tipe Bilangan Riil #
Tiga tipe menampung bilangan dengan bagian desimal:
| Tipe | Ukuran | Presisi | Suffix Literal |
|---|---|---|---|
float | 32 bit | sekitar 6-9 digit | f |
double | 64 bit | sekitar 15-17 digit | tidak perlu (default) |
decimal | 128 bit | 28-29 digit | m |
float dan double menyimpan angka dalam basis dua (standar IEEE 754), sedangkan decimal menghitung dalam basis sepuluh. Perbedaan basis terlihat pada pecahan seperti 0,1 yang tidak dapat direpresentasikan persis dalam basis dua:
Console.WriteLine(0.1 + 0.2);
Console.WriteLine(0.1m + 0.2m);
Console.WriteLine(3.14f);Output yang Dihasilkan:
0.30000000000000004
0.3
3.14Mari kita telaah:
- Baris 1 (
0.1 + 0.2): Kedua literal tanpa suffix bertipedouble. Keterbatasan representasi basis dua menghasilkan0.30000000000000004, bukan0.3persis. - Baris 2 (
0.1m + 0.2m): Suffixmmenjadikan kedua nilaidecimal; hasilnya0.3bersih karena perhitungan berjalan dalam basis sepuluh. - Baris 3 (
3.14f): Suffixfmenandai literalfloat; tanpa suffix, literal bertitik desimal otomatis bertipedouble.
Memilih Tipe yang Tepat #
int: pilihan default untuk bilangan bulat umum seperti jumlah stok dan jumlah tiket.long: bilangan bulat melebihi sekitar 2,1 miliar, misalnya jumlah penduduk atau nomor transaksi besar.decimal: nilai uang dan perhitungan finansial seperti harga tiket Rp50.000,00.double: perhitungan umum dan ilmiah yang menoleransi pembulatan representasi.float: volume data besar yang mengutamakan hemat memori, misalnya grafis dan game.