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 Decimaldahildir.

Sonuç

Sonuç, ile bölündükten number2sonra 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, number1kar 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 number2veri 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 number1sı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ğerlendirilirse number2 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 Doubleve 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 Decimalzorlar 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.

Ayrıca bkz.