다음을 통해 공유


Mod 연산자(Visual Basic)

두 숫자를 나누고 나머지만 반환합니다.

구문

result = number1 Mod number2

부분

result
필수입니다. 모든 숫자 변수 또는 속성입니다.

number1
필수입니다. 임의의 숫자 식입니다.

number2
필수입니다. 임의의 숫자 식입니다.

지원되는 유형

모든 숫자 형식. 여기에는 부호 없는 부동 소수점 형식 및 Decimal이 포함됩니다.

결과

결과는 number1number2로 나눈 나머지입니다. 예를 들어, 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가 부동 소수점 값인 경우 나누기의 부동 소수점 나머지가 반환됩니다. 결과의 데이터 형식은 나누기에서 발생하는 가능한 모든 값을 number1number2의 데이터 형식으로 저장할 수 있는 가장 작은 데이터 형식입니다.

number1 또는 number2Nothing으로 평가되는 경우, 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.

참고 항목