Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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, number1a proto může být kladné nebo záporné. Výsledek je vždy v rozsahu (-number2, number2), výhradní. Napří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 \ 4se 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 / 4se 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
number2nelze určit v době kompilace a vygeneruje chybuBC30542 Division by zero occurred while evaluating this expressionv době kompilace, pokudnumber2je 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 Doubleoperandy 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 Decimal0,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.