Operator Mod (Visual Basic)

Membagi dua angka dan hanya mengembalikan sisanya.

Sintaks

result = number1 Mod number2

Generator

result
Harus diisi. Variabel atau properti numerik apa pun.

number1
Harus diisi. Ekspresi numerik apa pun.

number2
Harus diisi. Ekspresi numerik apa pun.

Jenis yang didukung

Semua jenis numerik. Ini termasuk jenis yang tidak ditandatangani dan floating-point dan Decimal.

Hasil

Hasilnya adalah sisa setelah number1 dibagi dengan number2. Misalnya, ekspresi 14 Mod 4 mengevaluasi ke 2.

Catatan

Ada perbedaan antara sisa dan modulus dalam matematika, dengan hasil yang berbeda untuk angka negatif. Operator Mod di Visual Basic, operator op_Modulus .NET Framework, dan instruksi IL rem yang mendasarinya semuanya melakukan operasi yang tersisa.

Hasil operasi Mod mempertahankan tanda dividen, number1, sehingga mungkin positif atau negatif. Hasilnya selalu dalam rentang (-number2, number2), eksklusif. Contohnya:

Public Module Example
   Public Sub Main()
      Console.WriteLine($" 8 Mod  3 = {8 Mod 3}")
      Console.WriteLine($"-8 Mod  3 = {-8 Mod 3}")
      Console.WriteLine($" 8 Mod -3 = {8 Mod -3}")
      Console.WriteLine($"-8 Mod -3 = {-8 Mod -3}")
   End Sub
End Module
' The example displays the following output:
'       8 Mod  3 = 2
'      -8 Mod  3 = -2
'       8 Mod -3 = 2
'      -8 Mod -3 = -2

Keterangan

Jika salah satu number1 atau number2 merupakan nilai floating-point, sisa floating-point dari pembagian dikembalikan. Jenis data hasilnya adalah jenis data terkecil yang dapat menyimpan semua kemungkinan nilai yang dihasilkan dari pembagian dengan jenis data number1 dan number2.

Jika number1 atau number2 mengevaluasi ke Nothing (Tidak Ada), itu diperlakukan sebagai nol.

Operator terkait meliputi berikut ini:

  • Operator \ (Visual Basic) mengembalikan hasil bagi bilangan bulat dari pembagian. Misalnya, ekspresi 14 \ 4 mengevaluasi ke 3.

  • Operator / (Visual Basic) mengembalikan nilai hasil bagi penuh, termasuk sisanya, sebagai angka floating-point. Misalnya, ekspresi 14 / 4 mengevaluasi ke 3,5.

Percobaan pembagian dengan nol

Jika number2 mengevaluasi ke nol, perilaku operator Mod bergantung pada jenis data operand:

  • Pembagian integral melempar pengecualian DivideByZeroException jika number2 tidak dapat ditentukan dalam waktu kompilasi dan menghasilkan kesalahan waktu kompilasi BC30542 Division by zero occurred while evaluating this expression jika number2 dievaluasi ke nol pada waktu kompilasi.
  • Pembagian floating-point mengembalikan Double.NaN.

Rumus yang setara

Ekspresi a Mod b setara dengan salah satu rumus berikut:

a - (b * (a \ b))

a - (b * Fix(a / b))

Impresisi floating-point

Ketika Anda bekerja dengan angka titik-mengambang, ingat bahwa angka tersebut tidak selalu memiliki representasi desimal yang tepat dalam memori. Ini dapat menyebabkan hasil yang tidak terduga dari operasi tertentu, seperti perbandingan nilai dan operator Mod. Untuk informasi selengkapnya, lihat Pemecahan Masalah Jenis Data.

Kelebihan beban

Operator Mod dapat overload, yang berarti bahwa kelas atau struktur dapat menentukan ulang perilakunya. Jika kode Anda menerapkan Mod ke instans kelas atau struktur yang menyertakan overload seperti itu, pastikan Anda memahami perilaku yang ditentukan ulang. Untuk informasi lebih lanjut, lihat Prosedur Operator.

Contoh 1

Contoh berikut menggunakan operator Mod untuk membagi dua angka dan hanya mengembalikan sisanya. Jika salah satu angka adalah angka floating-point, hasilnya adalah angka floating-point yang menunjukkan sisanya.

Debug.WriteLine(10 Mod 5)
' Output: 0
Debug.WriteLine(10 Mod 3)
' Output: 1
Debug.WriteLine(-10 Mod 3)
' Output: -1
Debug.WriteLine(12 Mod 4.3)
' Output: 3.4
Debug.WriteLine(12.6 Mod 5)
' Output: 2.6
Debug.WriteLine(47.9 Mod 9.35)
' Output: 1.15

Contoh 2

Contoh berikut menunjukkan potensi impresi operan floating-point. Dalam pernyataan pertama, operan adalah Double, dan 0,2 adalah pecahan biner berulang tanpa batas dengan nilai tersimpan 0,20000000000000001. Dalam pernyataan kedua, karakter jenis literal D memaksa kedua operand ke Decimal, dan 0,2 memiliki representasi yang tepat.

firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.

Lihat juga