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:

TipeUkuranRentang
sbyte8 bit-128 sampai 127
byte8 bit0 sampai 255
short16 bit-32768 sampai 32767
ushort16 bit0 sampai 65535
int32 bit-2147483648 sampai 2147483647
uint32 bit0 sampai 4294967295
long64 bit-9223372036854775808 sampai 9223372036854775807
ulong64 bit0 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:

csharp
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:

text
255
-128
32767
2147483647
4294967295
9223372036854775807

Setiap 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:

TipeUkuranPresisiSuffix Literal
float32 bitsekitar 6-9 digitf
double64 bitsekitar 15-17 digittidak perlu (default)
decimal128 bit28-29 digitm

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:

csharp
Console.WriteLine(0.1 + 0.2);
Console.WriteLine(0.1m + 0.2m);
Console.WriteLine(3.14f);

Output yang Dihasilkan:

text
0.30000000000000004
0.3
3.14

Mari kita telaah:

  1. Baris 1 (0.1 + 0.2): Kedua literal tanpa suffix bertipe double. Keterbatasan representasi basis dua menghasilkan 0.30000000000000004, bukan 0.3 persis.
  2. Baris 2 (0.1m + 0.2m): Suffix m menjadikan kedua nilai decimal; hasilnya 0.3 bersih karena perhitungan berjalan dalam basis sepuluh.
  3. Baris 3 (3.14f): Suffix f menandai literal float; tanpa suffix, literal bertitik desimal otomatis bertipe double.

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.