Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Két számot oszt el, és csak a maradékot adja vissza.
Szemantika
result = number1 Mod number2
Részek
result
Szükséges. Bármilyen numerikus változó vagy tulajdonság.
number1
Szükséges. Bármilyen numerikus kifejezés.
number2
Szükséges. Bármilyen numerikus kifejezés.
Támogatott típusok
Minden numerikus típus. Ide tartoznak az aláíratlan és a lebegőpontos típusok és Decimala .
Eredmény
Az eredmény a maradék number1 után osztva a következővel number2: . A kifejezés 14 Mod 4 például 2 értéket ad ki.
Megjegyzés:
A matematikában különbség van a maradék és a modulus között, a negatív számok eltérő eredményeivel. A Mod Visual Basic operátora, a .NET-keretrendszer op_Modulus operátora és a mögöttes rem IL utasítás mind egy fennmaradó műveletet hajt végre.
A művelet eredménye Mod megtartja az osztalék előjelét, number1így pozitív vagy negatív lehet. Az eredmény mindig a tartomány (-number2, number2), kizárólagos. Például:
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
Megjegyzések
Ha vagy number1number2 lebegőpontos érték, az osztás lebegőpontos fennmaradó részét adja vissza a függvény. Az eredmény adattípusa a legkisebb adattípus, amely képes tárolni az összes lehetséges értéket, amely az és number1number2a .
Ha number1 a number2semmit nem értékeli ki, akkor az nullaként lesz kezelve.
A kapcsolódó operátorok a következők:
A \ operátor (Visual Basic) egy osztás egész hányadosát adja vissza. A kifejezés
14 \ 4például 3-ra értékel.A /operátor (Visual Basic) a teljes hányadost adja vissza, a többit is lebegőpontos számként. A kifejezés
14 / 4például 3,5-ös értéket ad ki.
Osztási kísérlet nullával
Ha number2 a kiértékelés értéke nulla, az Mod operátor viselkedése az operandusok adattípusától függ:
- Az integrált osztás kivételt DivideByZeroException okoz, ha
number2nem határozható meg fordítási időben, és fordítási időpontban nullára értékelt fordítási időtBC30542 Division by zero occurred while evaluating this expressionnumber2eredményez. - A lebegőpontos osztás eredménye Double.NaN.
Egyenértékű képlet
A kifejezés a Mod b egyenértékű az alábbi képletek egyikével:
a - (b * (a \ b))
a - (b * Fix(a / b))
Lebegőpontos pontatlanság
Amikor lebegőpontos számokkal dolgozik, ne feledje, hogy a számok nem mindig rendelkeznek pontos decimális ábrázolással a memóriában. Ez bizonyos műveletek, például az érték-összehasonlítás és az Mod operátor váratlan eredményeihez vezethet. További információ: Adattípusok hibaelhárítása.
Túlterhelés
Az Mod operátor túlterhelhető, ami azt jelenti, hogy egy osztály vagy struktúra újradefiniálta a viselkedését. Ha a kód egy ilyen túlterhelést tartalmazó osztály vagy struktúra egy példányára vonatkozik Mod , győződjön meg arról, hogy tisztában van az újradefiniált viselkedésével. További információ: Operátori eljárások.
1. példa
Az alábbi példa az operátorral Mod két számot oszt el, és csak a maradékot adja vissza. Ha bármelyik szám lebegőpontos szám, az eredmény egy lebegőpontos szám, amely a maradékot jelöli.
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
2. példa
Az alábbi példa a lebegőpontos operandusok lehetséges pontatlanságát mutatja be. Az első utasításban az operandusok a következők Double, a 0.2 pedig egy végtelenül ismétlődő bináris tört, amelynek tárolt értéke 0,2000000000001. A második utasításban a literál típusú karakter D mindkét operandusra Decimalkényszeríti az operandusokat, a 0.2 pedig pontos ábrázolású.
firstResult = 2.0 Mod 0.2
' Double operation returns 0.2, not 0.
secondResult = 2D Mod 0.2D
' Decimal operation returns 0.