Mod 연산자(Visual Basic)
두 숫자를 나누고 나머지만 반환합니다.
구문
result = number1 Mod number2
부분
result
필수입니다. 모든 숫자 변수 또는 속성입니다.
number1
필수입니다. 임의의 숫자 식입니다.
number2
필수입니다. 임의의 숫자 식입니다.
지원되는 유형
모든 숫자 형식. 여기에는 부호 없는 부동 소수점 형식 및 Decimal
이 포함됩니다.
결과
결과는 number1
을 number2
로 나눈 나머지입니다. 예를 들어, 14 Mod 4
식은 2로 계산됩니다.
참고 항목
수학에서 나머지와 모듈 사이에는 차이가 있으며, 음수에 대한 결과가 다릅니다. Visual Basic의 Mod
연산자, .NET Framework op_Modulus
연산자 및 기본 rem IL 명령은 모두 나머지 작업을 수행합니다.
Mod
작업의 결과는 나뉨수, number1
의 부호를 유지하므로, 양수 또는 음수일 수 있습니다. 결과는 항상 배타적인 (-number2
, number2
) 범위입니다. 예시:
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
설명
number1
또는 number2
가 부동 소수점 값인 경우 나누기의 부동 소수점 나머지가 반환됩니다. 결과의 데이터 형식은 나누기에서 발생하는 가능한 모든 값을 number1
및 number2
의 데이터 형식으로 저장할 수 있는 가장 작은 데이터 형식입니다.
number1
또는 number2
가 Nothing으로 평가되는 경우, 0으로 처리됩니다.
이러한 연산자는 다음과 같습니다.
\ 연산자(Visual Basic)는 나누기의 정수 몫을 반환합니다. 예를 들어,
14 \ 4
식은 3으로 평가됩니다./ 연산자(Visual Basic)는 나머지를 포함한 전체 몫을 부동 소수점 숫자로 반환합니다. 예를 들어,
14 / 4
식은 3.5로 평가됩니다.
0으로 나누기 시도
number2
가 0으로 평가되는 경우 Mod
연산자의 동작은 피연산자의 데이터 형식에 따라 달라집니다.
- 정수 나누기는
number2
를 컴파일 시간에서 확인할 수 없는 경우 DivideByZeroException 예외를 throw하고number2
가 컴파일 시간에서 0으로 평가되면BC30542 Division by zero occurred while evaluating this expression
컴파일 시간 오류를 생성합니다. - 부동 소수점 나누기에서 Double.NaN이 반환됩니다.
동일한 수식
a Mod b
식은 다음 수식 중 하나와 동일합니다.
a - (b * (a \ b))
a - (b * Fix(a / b))
부동 소수점 부정확성
부동 소수점 숫자로 작업할 때 항상 메모리에 정확한 10진 표현이 있는 것은 아니라는 점을 기억하세요. 이로 인해 값 비교 및 Mod
연산자와 같은 특정 작업에서 예기치 않은 결과가 발생할 수 있습니다. 자세한 내용은 문제 해결 데이터 형식을 참조하세요.
오버로딩
Mod
연산자는 오버로드될 수 있습니다. 즉, 클래스 또는 구조체가 해당 동작을 다시 정의할 수 있습니다. 코드가 Mod
를 이러한 오버로드를 포함하는 클래스 또는 구조체의 인스턴스에 적용되는 경우 다시 정의된 동작을 이해해야 합니다. 자세한 내용은 Operator Procedures을 참조하세요.
예 1
다음 예제에서는 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
예제 2
다음 예제에서는 부동 소수점 피연산자의 잠재적인 부정확성을 보여 줍니다. 첫 번째 문에서 피연산자는 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.
참고 항목
.NET