Delen via


Mod-operator (Visual Basic)

Verdeelt twee getallen en retourneert alleen het restgetal.

Syntaxis

result = number1 Mod number2

generator

result
Vereist. Elke numerieke variabele of eigenschap.

number1
Vereist. Elke numerieke expressie.

number2
Vereist. Elke numerieke expressie.

Ondersteunde typen

Alle numerieke typen. Dit omvat de niet-ondertekende en drijvendekommatypen en Decimal.

Resultaat

Het resultaat is de rest na number1 gedeeld door number2. De expressie 14 Mod 4 resulteert bijvoorbeeld in 2.

Notitie

Er is een verschil tussen rest en modulus in wiskunde, met verschillende resultaten voor negatieve getallen. De Mod operator in Visual Basic, de .NET Framework-operator op_Modulus en de onderliggende rem IL-instructie voeren allemaal een restbewerking uit.

Het resultaat van een Mod bewerking behoudt het teken van het dividend, number1en kan dus positief of negatief zijn. Het resultaat bevindt zich altijd in het bereik (-number2, number2), exclusief. Voorbeeld:

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

Opmerkingen

Als een number1 drijvende-kommawaarde of number2 een drijvende-kommawaarde is, wordt de rest van de drijvende komma geretourneerd. Het gegevenstype van het resultaat is het kleinste gegevenstype dat alle mogelijke waarden kan bevatten die het gevolg zijn van delen met de gegevenstypen en number1number2.

Als number1 of number2 evalueert naar niets, wordt het beschouwd als nul.

Gerelateerde operators omvatten het volgende:

  • De \-operator (Visual Basic) retourneert het gehele getal van een deling. De expressie 14 \ 4 resulteert bijvoorbeeld in 3.

  • De /Operator (Visual Basic) retourneert het volledige quotiënt, inclusief de rest, als een drijvendekommagetal. De expressie 14 / 4 resulteert bijvoorbeeld in 3,5.

Poging tot delen door nul

Als number2 de waarde nul is, is het gedrag van de Mod operator afhankelijk van het gegevenstype van de operanden:

  • Een integrale deling genereert een DivideByZeroException uitzondering als number2 deze niet kan worden bepaald in de compilatietijd en genereert een compilatietijdfout BC30542 Division by zero occurred while evaluating this expression als number2 deze wordt geëvalueerd op nul tijdens het compileren.
  • Een drijvendekommageling retourneert Double.NaN.

Equivalente formule

De expressie a Mod b is gelijk aan een van de volgende formules:

a - (b * (a \ b))

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

Onnauwkeurigheid van drijvende komma

Wanneer u met drijvendekommagetalnummers werkt, moet u er rekening mee houden dat ze niet altijd een nauwkeurige decimale weergave in het geheugen hebben. Dit kan leiden tot onverwachte resultaten van bepaalde bewerkingen, zoals waardevergelijking en de Mod operator. Zie Problemen met gegevenstypen oplossen voor meer informatie.

Overbelasting

De Mod operator kan overbelast raken, wat betekent dat een klasse of structuur het gedrag ervan opnieuw kan definiëren. Als uw code van toepassing is op Mod een instantie van een klasse of structuur die een dergelijke overbelasting omvat, moet u het opnieuw gedefinieerde gedrag begrijpen. Zie Operator Procedures voor meer informatie.

Voorbeeld 1

In het volgende voorbeeld wordt de Mod operator gebruikt om twee getallen te delen en alleen de rest te retourneren. Als een van beide getallen een drijvendekommagetal is, is het resultaat een drijvendekommagetal dat de rest vertegenwoordigt.

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

Voorbeeld 2

In het volgende voorbeeld ziet u de mogelijke onnauwkeurigheid van operanden met drijvende komma. In de eerste instructie zijn Doublede operanden en is 0,2 een oneindig herhalende binaire breuk met een opgeslagen waarde van 0,20000000000000000001. In de tweede instructie dwingt het letterlijke type teken D beide operanden tot Decimal, en 0,2 heeft een nauwkeurige weergave.

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

Zie ook