Mod 运算符 (Visual Basic)

将两个数字相除并且仅返回余数。

number1 Mod number2

部件

  • number1
    必需。任何数值表达式。

  • number2
    必需。任何数值表达式。

支持的类型

所有数值类型。这包括无符号类型和浮点类型以及 Decimal。

结果

结果为 number1 除以 number2 后的余数。例如,表达式 14 Mod 4 的结果为 2。

备注

如果 number1 或 number2 是浮点值,则将返回除法运算的浮点余数。结果的数据类型是最小的数据类型,该类型可以容纳由 number1 和 number2 的数据类型相除得到的所有可能值。

如果 number1 或 number2 计算结果等于 Nothing,则将其视为零。

相关的运算符包括:

尝试用零作除数

如果 number2 等于零,则 Mod 运算符的行为取决于操作数的数据类型。整数除法引发 DivideByZeroException 异常。浮点数除法返回 NaN

等效公式

表达式 a Mod b 与下面的公式是等价的:

a - (b * (a \ b))

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

浮点数偏差

在处理浮点数字时,请记住浮点数在内存中并不总是有精确的表示形式。对于某些操作(例如值比较和 Mod 运算符),这可能导致意外的结果。有关更多信息,请参见数据类型疑难解答 (Visual Basic)

重载

Mod 运算符可进行重载,这意味着类或结构可以重定义其行为。如果您在代码中将 Mod 应用到包含此类重载的类或结构的实例中,请确保您了解其重定义的行为。有关更多信息,请参见运算符过程 (Visual Basic)

示例

下面的示例使用 Mod 运算符将两个数相除,并只返回余数。如果有一个数是浮点数,则结果是表示余数的浮点数。

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

下面的示例演示了浮点操作数潜在的不精确性。在第一个语句中,操作数的类型为 Double,0.2 是一个存储的值为 0.20000000000000001 的无限重复的二进制小数。在第二个语句中,文本类型字符 D 将两个操作数强制为 Decimal 类型,0.2 具有精确的表示形式。

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

请参见

任务

数据类型疑难解答 (Visual Basic)

参考

算术运算符 (Visual Basic)

Visual Basic 中的运算符优先级

按功能列出的运算符 (Visual Basic)

Int

Fix

\ 运算符 (Visual Basic)

概念

算术运算符 (Visual Basic)