Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Delar upp två tal och returnerar endast resten.
Syntax
result = number1 Mod number2
Delar
result 
Obligatoriskt. Valfri numerisk variabel eller egenskap.
number1 
Obligatoriskt. Alla numeriska uttryck.
number2 
Obligatoriskt. Alla numeriska uttryck.
Typer som stöds
Alla numeriska typer. Detta inkluderar de osignerade och flyttalstyperna och Decimal.
Resultat
Resultatet är resten efter number1 divideras med number2. Uttrycket 14 Mod 4 utvärderas till exempel till 2.
Anmärkning
Det finns en skillnad mellan rest och modulus i matematik, med olika resultat för negativa tal. Operatorn Mod i Visual Basic, .NET Framework-operatorn op_Modulus och den underliggande rem IL-instruktionen utför alla en reståtgärd.
Resultatet av en Mod åtgärd behåller tecknet på utdelningen, number1, så det kan vara positivt eller negativt. Resultatet är alltid i intervallet (-number2, number2), exklusivt. Till exempel:
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
Anmärkningar
Om antingen number1 eller number2 är ett flyttalvärde returneras resten av divisionens flyttal. Datatypen för resultatet är den minsta datatypen som kan innehålla alla möjliga värden som är resultatet av division med datatyperna number1 och number2.
Om number1 eller number2 utvärderas till Ingenting behandlas det som noll.
Relaterade operatorer omfattar följande:
\-operatorn (Visual Basic) returnerar heltalskvoten för en division. Uttrycket
14 \ 4utvärderas till exempel till 3.Operatorn /(Visual Basic) returnerar den fullständiga kvoten, inklusive resten, som ett flyttalsnummer. Uttrycket
14 / 4utvärderas till exempel till 3,5.
Försök till division med noll
Om number2 utvärderas till noll beror operatorns Mod beteende på operandernas datatyp:
- En integrerad division utlöser ett DivideByZeroException undantag om 
number2det inte går att fastställa i kompileringstid och genererar ett kompileringsfelBC30542 Division by zero occurred while evaluating this expressionomnumber2det utvärderas till noll vid kompileringstid. - En flyttalsdivision returnerar Double.NaN.
 
Motsvarande formel
Uttrycket a Mod b motsvarar någon av följande formler:
a - (b * (a \ b))
a - (b * Fix(a / b))
Flyttalsimprecision
När du arbetar med flyttalsnummer ska du komma ihåg att de inte alltid har en exakt decimalrepresentation i minnet. Detta kan leda till oväntade resultat från vissa åtgärder, till exempel värdejämförelse och operatorn Mod . Mer information finns i Felsöka datatyper.
Överbelastning
Operatorn Mod kan överbelastas, vilket innebär att en klass eller struktur kan omdefiniera sitt beteende. Om koden gäller Mod för en instans av en klass eller struktur som innehåller en sådan överbelastning bör du vara säker på att du förstår dess omdefinierade beteende. Mer information finns i Operatorprocedurer.
Exempel 1
I följande exempel används operatorn Mod för att dela upp två tal och returnera endast resten. Om något av talen är ett flyttalsnummer är resultatet ett flyttalsnummer som representerar resten.
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
Exempel 2
I följande exempel visas den potentiella imprecisionen av flyttalsoperor. I den första instruktionen är Doubleoperanderna , och 0.2 är ett oändligt upprepande binärt bråk med ett lagrat värde på 0,2000000000001. I den andra instruktionen tvingar teckentypen D literal båda operanderna till Decimal, och 0.2 har en exakt representation.
firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.