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 kompilasiBC30542 Division by zero occurred while evaluating this expression
jikanumber2
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk