다음을 통해 공유


Mod 연산자(Visual Basic)

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

문법

result = number1 Mod number2

부분

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

number1
필수 사항입니다. 모든 숫자 식입니다.

number2
필수 사항입니다. 모든 숫자 식입니다.

지원되는 형식

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

결과

결과는 다음 number1 의 나머지를 으로 number2나눕니다. 예를 들어 식 14 Mod 4 은 2로 계산됩니다.

비고

수학에서 나머지모듈러스 사이에는 차이가 있으며 음수에 대한 결과는 다릅니다. Mod Visual Basic, .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

비고

부동 소수점 값이거나 number1number2 부동 소수점 값인 경우 나누기의 부동 소수점 나머지가 반환됩니다. 결과의 데이터 형식은 데이터 형식과 나누기에서 발생하는 가능한 모든 값을 보유할 수 있는 가장 작은 데이터 형식 number1 입니다 number2.

Nothing으로 계산되거나 number2 값이 0이면 number1 0으로 처리됩니다.

관련 연산자는 다음과 같습니다.

  • \ 연산자(Visual Basic)는 나누기의 정수 몫을 반환합니다. 예를 들어 식 14 \ 4 은 3으로 계산됩니다.

  • /연산자(Visual Basic)는 나머지를 포함한 전체 몫을 부동 소수점 숫자로 반환합니다. 예를 들어 식 14 / 4 은 3.5로 계산됩니다.

0으로 나누기 시도

0으로 계산되는 경우 number2 연산자의 Mod 동작은 피연산자의 데이터 형식에 따라 달라집니다.

  • 정수 분할은 컴파일 시간에 확인할 수 없는 경우 number2 예외를 throw DivideByZeroException 하고 컴파일 시간에 0으로 평가되는 경우 number2 컴파일 시간 오류를 BC30542 Division by zero occurred while evaluating this expression 생성합니다.
  • 부동 소수점 나누기에서 반환합니다 Double.NaN.

해당하는 수식

a Mod b 식은 다음 수식 중 하나에 해당합니다.

a - (b * (a \ b))

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

부동 소수점 부정확성

부동 소수점 숫자로 작업할 때 항상 메모리에 정확한 소수점 표현이 있는 것은 아닙니다. 이로 인해 값 비교 및 Mod 연산자와 같은 특정 작업에서 예기치 않은 결과가 발생할 수 있습니다. 자세한 내용은 데이터 형식 문제 해결을 참조하세요.

오버로딩

연산자는 Mod오버로드될 수 있습니다. 즉, 클래스 또는 구조체가 해당 동작을 다시 정의할 수 있습니다. 코드가 Mod 이러한 오버로드를 포함하는 클래스 또는 구조체의 인스턴스에 적용되는 경우 다시 정의된 동작을 이해해야 합니다. 자세한 내용은 운영자 프로시저를 참조하세요.

예제 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

다음 예제에서는 부동 소수점 피연산자의 잠재적인 부동 소수점 피연산자를 보여 줍니다. 첫 번째 문에서 피연산자는 Double0.2이고, 0.2는 저장된 값이 0.2000000000000000000인 무한 반복 이진 분수입니다. 두 번째 문에서 리터럴 형식 문자 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.

참고하십시오