Mod-Operator (Visual Basic)

Dividiert zwei Zahlen und gibt nur den Rest zurück.

Syntax

result = number1 Mod number2

Bestandteile

result
Erforderlich. Eine beliebige numerische Variable oder Eigenschaft.

number1
Erforderlich. Ein beliebiger numerischer Ausdruck.

number2
Erforderlich. Ein beliebiger numerischer Ausdruck.

Unterstützte Typen

allen numerischen Typen Dies schließt Typen ohne Vorzeichen, Gleitkommatypen und Decimal ein.

Ergebnis

Das Ergebnis ist der Rest der Division von number1 durch number2. Der Ausdruck 14 Mod 4 ergibt beispielsweise 2.

Hinweis

In der Mathematik gibt es einen Unterschied zwischen Rest und Betrag, der bei negativen Zahlen zu unterschiedlichen Ergebnissen führt. Der Mod-Operator in Visual Basic, der .NET Framework-Operator op_Modulus und die zugrunde liegende rem-Zwischenspracheanweisung führen jeweils eine Restoperation aus.

Beim Ergebnis einer Mod-Operation bleibt das Vorzeichen des Dividenden (number1) erhalten. Daher kann es positiv oder negativ sein. Das Ergebnis liegt immer im Bereich (-number2, number2) (ausschließlich). Beispiel:

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

Bemerkungen

Wenn entweder number1 oder number2 ein Gleitkommawert ist, wird der Gleitkommarest der Division zurückgegeben. Der Datentyp des Ergebnisses ist der kleinste Datentyp, der alle möglichen Werte enthalten kann, die sich aus der Division mit den Datentypen von number1 und number2 ergeben.

Wenn number1 oder number2 als Nothing auswertet wird, wird der Wert als null behandelt.

Verwandte Operatoren:

  • Der \-Operator (Visual Basic) gibt den ganzzahligen Quotienten einer Division zurück. Der Ausdruck 14 \ 4 ergibt beispielsweise 3.

  • Der /-Operator (Visual Basic) gibt den vollständigen Quotienten (einschließlich des Rests) als Gleitkommazahl zurück. Der Ausdruck 14 / 4 ergibt beispielsweise 3,5.

Versuchte Division durch null

Wenn die Auswertung von number2 einen Nullwert ergibt, hängt das Verhalten des Mod-Operators vom Datentyp der Operanden ab:

  • Bei einer ganzzahligen Division wird eine Ausnahme vom Typ DivideByZeroException ausgelöst, wenn number2 zur Kompilierzeit nicht bestimmt werden kann, und es wird ein Kompilierzeitfehler vom Typ BC30542 Division by zero occurred while evaluating this expression generiert, wenn number2 zur Kompilierzeit null ergibt.
  • Bei einer Gleitkommadivision wird Double.NaN zurückgegeben.

Gleichwertige Formel

Der Ausdruck a Mod b entspricht einer der folgenden Formeln:

a - (b * (a \ b))

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

Gleitkomma-Ungenauigkeit

Wenn Sie mit Gleitkommazahlen arbeiten, denken Sie daran, dass im Arbeitsspeicher nicht immer eine genaue Dezimaldarstellung vorhanden ist. Dies kann zu unerwarteten Ergebnissen bei bestimmten Vorgängen wie dem Wertvergleich und dem Mod-Operator führen. Weitere Informationen finden Sie unter Problembehandlung bei Datentypen (Visual Basic).

Überladen

Der Mod-Operator kann überladen werden. Das bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definieren kann. Wenn Ihr Code Mod auf eine Instanz einer Klasse oder Struktur anwendet, die eine solche Überladung enthält, ist es wichtig, mit dem neu definierten Verhalten vertraut zu sein. Weitere Informationen finden Sie unter Operator Procedures.

Beispiel 1

Im folgenden Beispiel wird der Mod-Operator verwendet, um zwei Zahlen zu dividieren und nur den Rest zurückzugeben. Wenn eine Zahl eine Gleitkommazahl ist, ist das Ergebnis eine Gleitkommazahl, die den Rest darstellt.

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

Beispiel 2

Im folgenden Beispiel wird die potenzielle Ungenauigkeit von Gleitkommaoperanden veranschaulicht. In der ersten Anweisung werden Operanden vom Typ Double verwendet, und „0.2“ ist ein sich unendlich wiederholender binärer Bruch mit einem gespeicherten Wert von 0,20000000000000001. In der zweiten Anweisung wird durch das Literal-Typzeichen D für beide Operanden Decimal erzwungen, um 0.2 exakt darzustellen.

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

Siehe auch