Mod işleci (Visual Basic)
İki sayıyı böler ve yalnızca kalanı döndürür.
Sözdizimi
result = number1 Mod number2
Parça
result
Gerekli. Herhangi bir sayısal değişken veya özellik.
number1
Gerekli. Herhangi bir sayısal ifade.
number2
Gerekli. Herhangi bir sayısal ifade.
Desteklenen türler
Tüm sayısal türler. Buna işaretsiz ve kayan nokta türleri ve Decimal
dahildir.
Sonuç
Sonuç, ile bölündükten number2
sonra number1
kalan sonuçdur. Örneğin, ifade 14 Mod 4
2 olarak değerlendirilir.
Not
Matematikte kalan ile modül arasında fark vardır ve negatif sayılar için farklı sonuçlar elde edilir. Mod
Visual Basic'teki işleç, .NET Framework op_Modulus
işleci ve temel rem IL yönergesinin tümü kalan işlemi gerçekleştirir.
İşlemin Mod
sonucu, number1
kar payı işaretini korur ve bu nedenle pozitif veya negatif olabilir. Sonuç her zaman (-number2
, number2
) aralığındadır. Örneğin:
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
Açıklamalar
number1
Veya number2
bir kayan nokta değeriyse, bölmenin kayan nokta geri kalanı döndürülür. Sonucun veri türü, ve number2
veri türleriyle bölünmesinden kaynaklanan tüm olası değerleri tutabilen en küçük veri türüdürnumber1
.
number2
Veya Hiçbir şey olarak değerlendirilirse number1
sıfır olarak değerlendirilir.
İlgili işleçler şunları içerir:
\ İşleci (Visual Basic), bir bölmenin tamsayı bölümünü döndürür. Örneğin, ifade
14 \ 4
3 olarak değerlendirilir./ İşleci (Visual Basic), kalan bölüm de dahil olmak üzere tam bölümünü kayan noktalı sayı olarak döndürür. Örneğin, ifade
14 / 4
3,5 olarak değerlendirilir.
Sıfıra bölme girişimi
Sıfır olarak değerlendirilirse number2
, işlecin davranışı Mod
işlenenlerin veri türüne bağlıdır:
- İntegral bölme, derleme zamanında belirlenemezse bir DivideByZeroException özel durum
number2
oluşturur ve derleme zamanında sıfır olarak değerlendirilirsenumber2
derleme zamanı hatasıBC30542 Division by zero occurred while evaluating this expression
oluşturur. - Kayan nokta bölme döndürür Double.NaN.
Eşdeğer formül
İfade a Mod b
aşağıdaki formüllerden biriyle eşdeğerdir:
a - (b * (a \ b))
a - (b * Fix(a / b))
Kayan noktalı kesinlik
Kayan noktalı sayılarla çalışırken, bunların bellekte her zaman kesin bir ondalık gösterimi olmadığını unutmayın. Bu, değer karşılaştırması ve işleç gibi belirli işlemlerden beklenmeyen sonuçlara Mod
yol açabilir. Daha fazla bilgi için bkz . Veri Türlerinde Sorun Giderme.
Aşırı Yükleme
işleci Mod
aşırı yüklenebilir, bu da bir sınıfın veya yapının davranışını yeniden tanımlayabildiği anlamına gelir. Kodunuz böyle bir aşırı yükleme içeren bir sınıf veya yapı örneği için geçerliyse Mod
, yeniden tanımlanmış davranışını anladığınızdan emin olun. Daha fazla bilgi için bkz . İşleç Yordamları.
Örnek 1
Aşağıdaki örnek, iki sayıyı bölmek ve yalnızca kalanı döndürmek için işlecini kullanır Mod
. Sayılardan biri kayan noktalı bir sayıysa, sonuç kalan değeri temsil eden kayan noktalı bir sayıdır.
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
Örnek 2
Aşağıdaki örnek, kayan nokta işlenenlerinin olası kesinliklerini gösterir. İlk deyimde işlenenler şeklindedir Double
ve 0,2, depolanmış değeri 0,20000000000000001 olan sonsuz yinelenen bir ikili kesirdir. İkinci deyimde, değişmez tür karakteri D
her iki işleneni de ile Decimal
zorlar ve 0,2'nin kesin bir gösterimi vardır.
firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.