Mod işleci (Visual Basic)

İki slayı böler ve yalnızca kalanı döndürür.

Syntax

result = number1 Mod number2

Bölümler

result
Gereklidir. Herhangi bir sayısal değişken veya özellik.

number1
Gereklidir. Herhangi bir sayısal ifade.

number2
Gereklidir. Herhangi bir sayısal ifade.

Desteklenen türler

Tüm sayısal türler. Bu, ve işaretsiz ve kayan nokta türlerini Decimal içerir.

Sonuç

Sonuç, ile bölündüklerinin number1 geri number2 kalanıdır. Örneğin ifade 14 Mod 4 2 olarak değerlendirilir.

Not

Matematikte kalan ve modüller arasında fark vardır ve negatif sayılar için farklı sonuçlar elde edersiniz. Visual Basic işleci, .NET Framework işleci ve temel Mod op_Modulus alınan rem IL yönergesi kalan işlemi gerçekleştirecek.

Bir işlem sonucu, kar payı ( ) işaretlerini korur Mod ve bu nedenle pozitif veya negatif number1 olabilir. Sonuç her zaman aralıkta (- number2 , number2 ) özeldir. Örnek:

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

veya bir number1 number2 kayan nokta değeri ise bölmenin kayan nokta kalanı döndürülür. Sonucun veri türü, ve veri türleriyle bölme sonucunda elde edilen tüm olası değerleri tutanın en küçük veri t number1 t t t number2 değeridir.

veya number1 Nothing number2 olarak değerlendirilirse,sıfır olarak kabul edilir.

İlgili işleçler aşağıdakileri içerir:

  • \ İşleci (Visual Basic), bölmenin tamsayı bölümü döndürür. Örneğin ifade 14 \ 4 3 olarak değerlendirilir.

  • / İşleci (Visual Basic), kalanı da dahil olmak üzere tam bölümü kayan nokta sayısı olarak döndürür. Örneğin ifadesi 14 / 4 3,5 olarak değerlendirilir.

Sıfıra bölme girişimi

sıfır number2 olarak değerlendirilirse işlecinin Mod davranışı işlenenlerin veri türüne bağlıdır:

  • İntegral bölme, derleme zamanında belirlenenine bir özel durum oluşturur ve derleme zamanında sıfır olarak değerlendirilirse bir derleme DivideByZeroException number2 zamanı hatası BC30542 Division by zero occurred while evaluating this expression number2 oluşturur.
  • Kayan nokta bölümü Double.NaN döndürür.

Eşdeğer formül

İfade, a Mod b aşağıdaki formüllerden herhangi biri ile eşdeğerdir:

a - (b * (a \ b))

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

Kayan nokta kararı

Kayan nokta sayılarıyla birlikte çalışıyorsanız bunların bellekte her zaman kesin ondalık gösterimi olmadığını unutmayın. Bu durum, değer karşılaştırması ve işleci gibi belirli işlemlerden beklenmeyen sonuçlara yol Mod açsa da. Daha fazla bilgi için bkz. Veri Türleri sorunlarını giderme.

Aşırı Yükleme

işleci Mod aşırı yüklenmiş olabilir; bu da bir sınıf veya yapının davranışını yeniden tanımlandırabileceğiniz anlamına gelir. Kodunuz böyle bir aşırı yükleme içeren bir sınıf veya yapı örneği için geçerli ise, bunun yeniden Mod tanımlanmamış davranışını ansanız emin olun. Daha fazla bilgi için bkz. İşleç Yordamları.

Örnek 1

Aşağıdaki örnekte iki Mod slanı bölmek ve yalnızca kalanı dönmek için işleci kullanır. Herhangi bir sayı bir kayan nokta numarası ise, sonuç kalanı temsil eden bir kayan nokta numarası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ı kararsızlıklarını gösteriyor. İlk deyimde işlenenler olur Double ve 0,2, depolanmış değeri 0,200000000000000 olan sonsuz olarak yinelenen bir ikili kesirdir. İkinci deyimde, değişmez tür karakteri her iki işleneni de olarak, D Decimal 0.2 ise kesin bir temsile sahiptir.

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.