Program membuat keputusan setiap saat: sistem ujian menentukan siswa lulus atau tidak, toko online memberi gratis ongkir bila total belanja mencapai batas tertentu. Semua keputusan itu berawal dari pertanyaan benar atau salah, dan operator perbandingan adalah alat untuk mengajukan pertanyaan tersebut kepada data.

Enam Operator Perbandingan #

OperatorArtiContohHasil
==Sama dengan5 == 5true
!=Tidak sama dengan5 != 3true
>Lebih besar dari7 > 3true
<Lebih kecil dari7 < 3false
>=Lebih besar atau sama dengan7 >= 7true
<=Lebih kecil atau sama dengan7 <= 6false

Bedakan == dengan =. Operator == membandingkan dua nilai tanpa mengubah keduanya, sedangkan = menyimpan nilai ke variabel. Menukar keduanya adalah salah satu kesalahan yang paling sering dialami pemula.

Hasil Selalu Bertipe bool #

Setiap expression perbandingan menghasilkan satu nilai bool: true atau false. Nilai itu bisa langsung dicetak, disimpan ke variabel, atau dipakai sebagai kondisi pada bagian control flow.

csharp
int nilaiA = 85;
int nilaiB = 70;

Console.WriteLine(nilaiA > nilaiB);
Console.WriteLine(nilaiA < nilaiB);
Console.WriteLine(nilaiA >= 85);
Console.WriteLine(nilaiA <= 84);
Console.WriteLine(nilaiA == 85);
Console.WriteLine(nilaiA != nilaiB);

Output yang Dihasilkan:

text
True
False
True
False
True
True

Mari kita telaah baris demi baris:

  1. Baris 1-2 (nilaiA, nilaiB): Dua variabel skor diisi 85 dan 70 sebagai data pembanding.
  2. Baris 4 (nilaiA > nilaiB): Nilai 85 lebih besar dari 70, sehingga hasilnya True.
  3. Baris 5 (nilaiA < nilaiB): Pernyataan 85 < 70 tidak benar, sehingga hasilnya False.
  4. Baris 6 (nilaiA >= 85): Nilai 85 memenuhi syarat “lebih besar atau sama dengan 85”, hasilnya True.
  5. Baris 7 (nilaiA <= 84): Nilai 85 tidak memenuhi “lebih kecil atau sama dengan 84”, hasilnya False.
  6. Baris 8-9 (== dan !=): Nilai 85 sama dengan 85 sehingga menghasilkan True, dan 85 berbeda dari 70 sehingga != juga menghasilkan True.

Membandingkan string #

Operator == juga berlaku untuk string. Perbandingan string di C# bersifat case-sensitive: perbedaan huruf besar dan huruf kecil membuat dua teks dianggap berbeda.

csharp
Console.WriteLine("Jakarta" == "jakarta");
Console.WriteLine("Budi" == "Budi");

Output yang Dihasilkan:

text
False
True

Baris pertama menghasilkan False karena huruf J besar berbeda dari j kecil. Bila perbandingan tanpa memedulikan besar-kecil huruf dibutuhkan, gunakan method string.Equals dengan opsi StringComparison.OrdinalIgnoreCase; perbandingan string dibahas lebih rinci pada bagian string.

Perbandingan Bilangan Real #

Operator == pada tipe double perlu dipakai dengan hati-hati. Bilangan real disimpan dalam format biner yang tidak selalu mampu merepresentasikan nilai desimal dengan tepat, sehingga dua nilai yang secara hitungan seharusnya sama bisa berbeda sedikit dari yang kita harapkan:

csharp
double hasil = 0.1 + 0.2;
Console.WriteLine(hasil);
Console.WriteLine(hasil == 0.3);

Output yang Dihasilkan:

text
0.30000000000000004
False

Variabel hasil tidak menyimpan 0.3 yang murni, melainkan nilai terdekat yang dapat ditampung format biner, yaitu 0.30000000000000004. Akibatnya perbandingan hasil == 0.3 menghasilkan False, meskipun hitungan di atas kertas menyatakan keduanya sama. Untuk membandingkan bilangan real, gunakan toleransi: periksa apakah selisih kedua nilai lebih kecil dari batas yang dapat diterima, misalnya Math.Abs(hasil - 0.3) < 0.0001.