Mod – operátor (Visual Basic)
Vydělí dvě čísla a vrátí pouze zbytek.
Syntaxe
result = number1 Mod number2
Součástky
result
Povinný: Libovolná číselná proměnná nebo vlastnost
number1
Povinný: Libovolný číselný výraz.
number2
Povinný: Libovolný číselný výraz.
Podporované typy
Všechny číselné typy. To zahrnuje typy bez znaménka a s plovoucí desetinou čárkou a Decimal
.
Výsledek
Výsledek je zbytek po number1
dělení .number2
Například výraz 14 Mod 4
se vyhodnotí jako 2.
Poznámka:
V matematice je rozdíl mezi zbytkem a moduly s různými výsledky záporných čísel. Operátor Mod
v jazyce Visual Basic, operátor .NET Framework op_Modulus
a základní instrukce IL rem proveďte všechny zbývající operace.
Výsledek Mod
operace zachová znaménko dividendy, number1
a proto může být kladné nebo záporné. Výsledek je vždy v rozsahu (-number2
, number2
), výhradní. Příklad:
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
Poznámky
Pokud se jedná number1
o hodnotu number2
s plovoucí desetinou čárkou, vrátí se zbytek dělení s plovoucí desetinou čárkou. Datový typ výsledku je nejmenší datový typ, který může obsahovat všechny možné hodnoty, které jsou výsledkem dělení s datovými typy number1
a number2
.
Pokud number1
nebo number2
se vyhodnotí jako Nic, považuje se za nulu.
Mezi související operátory patří:
Operátor \ (Visual Basic) vrátí celočíselnou podíl dělení. Například výraz
14 \ 4
se vyhodnotí jako 3.Operátor / (Visual Basic) vrátí úplný podíl, včetně zbytku, jako číslo s plovoucí desetinou čárkou. Například výraz
14 / 4
se vyhodnotí jako 3,5.
Pokus o dělení nulou
Pokud number2
se vyhodnotí jako nula, chování operátoru Mod
závisí na datovém typu operandů:
- Integrální dělení vyvolá DivideByZeroException výjimku, pokud
number2
nelze určit v době kompilace a vygeneruje chybuBC30542 Division by zero occurred while evaluating this expression
v době kompilace, pokudnumber2
je při kompilaci vyhodnocena na nulu. - Vrátí dělení Double.NaNs plovoucí desetinou čárkou .
Ekvivalentní vzorec
Výraz a Mod b
je ekvivalentní některému z následujících vzorců:
a - (b * (a \ b))
a - (b * Fix(a / b))
Nepřesnost s plovoucí desetinou čárkou
Při práci s čísly s plovoucí desetinnou čárkou nezapomeňte, že nemají vždy přesné desetinné číslo v paměti. To může vést k neočekávaným výsledkům určitých operací, jako je porovnání hodnot a Mod
operátor. Další informace najdete v tématu Řešení potíží s datovými typy.
Přetížení
Operátor Mod
může být přetížen, což znamená, že třída nebo struktura mohou předefinovat jeho chování. Pokud se váš kód vztahuje Mod
na instanci třídy nebo struktury, která takové přetížení zahrnuje, nezapomeňte pochopit jeho předdefinované chování. Další informace naleznete v tématu Procedury operátoru.
Příklad 1
Následující příklad používá Mod
operátor k rozdělení dvou čísel a vrácení pouze zbytku. Pokud je některé číslo číslo s plovoucí desetinou čárkou, je výsledkem číslo s plovoucí desetinou čárkou, které představuje zbytek.
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
Příklad 2
Následující příklad ukazuje potenciální nepřesnost operandů s plovoucí desetinou čárkou. V prvním příkazu jsou Double
operandy a 0,2 je nekonečně opakující se binární zlomek s uloženou hodnotou 0,200000000000001. Ve druhém příkazu vynutí znak D
literálového typu oba operandy a Decimal
0,2 přesné znázornění.
firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.