산술 식 예제: BizTalk 서비스

업데이트 날짜: 2015년 8월

Microsoft Azure BizTalk 서비스의 산술 식 예제를 나열합니다.

모든 산술 입력 값은 숫자 리터럴을 기반으로 CLR System.Double 형식의 숫자 값을 나타냅니다. 다음 예에서는 지원되는 숫자 리터럴을 보여 줍니다.

  • 100

  • 100.25

  • 0.25

  • .25

  • 8e2, 8e+2, 8E2, 8E+2

  • 1.2e8

  • 1.2e-8, 1.2E-8

Important중요
변환 파서는 숫자 리터럴의 데이터 형식을 나타내는 접미사를 지원하지 않습니다. 예를 들어 Long으로 표현되도록 2L을 사용하는 것은 지원되지 않습니다.

Double.TryParse() 메서드를 사용하여 숫자 리터럴 값이 유효한 double 값인지 확인합니다. 유효한 double 값이 아닌 경우 Convert.ToDouble() 메서드를 사용하여 인수를 double로 변환합니다. 변환에 실패하는 경우 값은 0입니다.

산술 식 미리 알림:

  • 산술 식에 연산자가 여러 개 있는 경우 곱하기, 나누기, 모듈로가 먼저 계산됩니다. 그런 다음, 더하기 및 빼기가 계산됩니다.

  • 괄호를 사용하여 순서를 제어합니다. 예를 들어 입력 값 더하기나 빼기를 괄호 안에 넣으면 식에서 해당 부분이 먼저 계산됩니다.

  • 숫자 값은 반올림 사용을 구체적으로 지정하지 않은 경우 반올림되지 않습니다.

다음 샘플 식에서는 아래와 같은 입력 값을 사용합니다.

 

Input1

ab123.456

Input2

78.9

Input3

-123.11

Expression.Add 메서드 기반입니다. double 형식의 인수 두 개가 필요합니다. double로 변환하지 못하는 경우 값이 0이 된 후에 연산이 수행됩니다.

 

Result

Input1+Input2

0 + 78.9 = 78.9

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input1+Input2+Input3

0 + 78.9 + (-123.11) = -44.21

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input2+Input3

78.9 + (-123.11) = -44.21

Input1+Input3

0 + (-123.11) = -123.11

double로 변환하지 못했기 때문에 Input1은 0입니다.

Expression.Subtract 메서드 기반입니다. double 형식의 인수 두 개가 필요합니다. double로 변환하지 못하는 경우 값이 0이 된 후에 연산이 수행됩니다.

 

Result

Input1-Input2

0 - 78.9 = -78.9

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input1-Input2-Input3

0 - 78.9 – (-123.11) = 44.21

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input2-Input3

78.9 - (-123.11) = 44.21

Input1-Input3

0 – (-123.11) = 123.11

double로 변환하지 못했기 때문에 Input1은 0입니다.

(Input1+Input2)-Input3

(0 + 78.9) – (-123.11) = 202.11

double로 변환하지 못했기 때문에 Input1은 0입니다.

Expression.Multiply 메서드 기반입니다. double 형식의 인수 두 개가 필요합니다.

double로 변환하지 못하는 경우 값이 0이 된 후에 연산이 수행됩니다. 두 입력이 모두 double로 변환된 경우 곱하기가 발생하고 값이 반환됩니다. 입력 중 하나만 double로 변환된 경우 해당 입력의 값이 반환됩니다. 입력 중 어느 것도 double로 변환되지 않은 경우 0이 반환됩니다.

 

Result

Input1*Input2

0 * 78.9 = 78.9

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input1*Input2*Input3

0 * 78.9 * (-123.11) = -9713.379

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input2*Input3

78.9 * (-123.11) = -9713.379

Input1*Input3

0 * (-123.11) = -123.11

double로 변환하지 못했기 때문에 Input1은 0입니다.

(Input1*Input2)-Input3*Input2

(0 * 78.9) – (-123.11) * 78.9 =

78.9 – (-9713.379) = 9792.279

double로 변환하지 못했기 때문에 Input1은 0입니다.

Expression.Divide 메서드 기반입니다. double 형식의 인수 두 개가 필요합니다.

double로 변환하지 못하는 경우 값이 0이 된 후에 연산이 수행됩니다. 두 입력이 모두 double로 변환되었으며 이와 동시에 분모 값이 0이 아닌 경우 나누기가 발생하고 값이 반환됩니다. 그렇지 않으면 0이 반환됩니다.

 

Result

Input1/Input2

0 / 78.9 = 0

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input1/Input2/Input3

0 / 78.9 / (-123.11) = 0

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input2/Input3

78.9 / (-123.11) = -0.6408902

Input3/Input1

-123.11 / 0 = 0

double로 변환하지 못했기 때문에 Input1은 0입니다.

분모가 0이면 출력이 0입니다.

(Input1/Input2)-Input2/Input3

(0 / 78.9) – (-123.11 / 78.9) =

0 – (-1.560329531051965) = 1.560329531051965

double로 변환하지 못했기 때문에 Input1은 0입니다.

Expression.Modulo 메서드 기반입니다. double 형식의 인수 두 개가 필요합니다.

double로 변환하지 못하는 경우 값이 0이 된 후에 연산이 수행됩니다. 두 입력이 모두 double로 변환되었으며 이와 동시에 분모 값이 0이 아닌 경우 나머지가 반환됩니다. 그렇지 않으면 0이 반환됩니다.

 

Result

Input1%2

0 % 2 = 0

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input1+Input2%4

0 + 78.9 % 4 = 2.9

double로 변환하지 못했기 때문에 Input1은 0입니다.

78.9 / 4 = 19.725입니다. 19은 몫이고 2.9는 나머지입니다(78.9 = 4 * 19 + 2.9이므로).

Input2%Input1

78.9 % 0 = 0

double로 변환하지 못했기 때문에 Input1은 0입니다.

Input3%Input2

-123.11 % 78.9 = -44.21

-123.11 / 78.9 = -1.560329531051965입니다. -1는 몫이고 -44.21은 나머지입니다(-123.11 = 78.9 * (-1) + (-44.21)이므로).

(Input1%Input2)*Input2%Input3

(0 % 78.9) * (78.9 % (-123.11)) =

0 * (78.9) = 0

double로 변환하지 못했기 때문에 Input1은 0입니다.

78.9 / -123.11 = -0.6408902607424255입니다. -0은 몫이고 78.9는 나머지입니다(78.9 = -123.11 * (-0) + 78.9이므로).

Math.Abs 메서드 기반입니다. 단일 인수가 필요하며, 이 인수를 double로 변환합니다. double로 변환된 경우 인수의 절대값이 반환됩니다. 그렇지 않으면 0이 반환됩니다.

 

Result

Abs(Input1)

0

double로 변환하지 못했기 때문에 Input1은 0입니다.

Abs(Input2)

78.9

Abs(Input3)

123.11

Abs(Input1)+Abs(Input2)+Abs(Input3)

0 + 78.9 + 123.11 = 202.01

(Abs(Input1)*Abs(Input2))*Input2%Abs(Input3)

(0*78.9) * 78.9 % 123.11 =

78.9 * 78.9 % 123.11 =

6225.21 % 123.11 = 69.71

double로 변환하지 못했기 때문에 Input1은 0입니다.

(0*78.9): 곱하기의 경우 인수 중 하나만 double로 변환할 수 있으면 해당 인수의 값이 반환됩니다.

6225.21 / 123.11 = 50.566241입니다. 50은 몫이고 69.71는 나머지입니다(6225.21 = 123.11 * 50 + 69.71이므로).

Math.Max 메서드 기반입니다. double 형식의 인수 두 개가 필요합니다.

두 입력이 모두 double로 변환된 경우 두 입력 값 중 최대값이 반환됩니다. 입력 중 하나만 double로 변환된 경우 해당 입력의 값이 반환됩니다. 입력 중 어느 것도 double로 변환되지 않은 경우 0이 반환됩니다.

 

Result

Max(Input1, Input2)

78.9

Input1이 double로 변환되지 못했으므로 두 번째 입력 값이 반환됩니다.

Max(Input2, Input3)

78.9

Max(Input3, Input2)+Max(Input2, Input1)+Max(Input3, Input1)

78.9 + 78.9 + (-123.11) = 34.69

Input1이 double로 변환되지 못했으므로 두 번째 입력 값이 반환됩니다.

(Max(Input1, Input3)*Max(Input2, Input3))* Input2%Abs(Max(Input3, Input1))

((-123.11) * 78.9) * 78.9 % 123.11 =

-9713.379 * 78.9 % 123.11 =

-766385.6031 % 123.11 = -25.8531

Input1이 double로 변환되지 못했으므로 두 번째 입력 값이 반환됩니다.

-766385.6031 / 123.11 = -6225.21입니다. -6225는 몫이고 -25.8531은 나머지입니다(-766385.6031 = 123.11 * (-6225) + (-25.8531)이므로).

Math.Min 메서드 기반입니다. double 형식의 인수 두 개가 필요합니다.

두 입력이 모두 double로 변환된 경우 두 입력 값 중 최소값이 반환됩니다. 입력 중 하나만 double로 변환된 경우 해당 입력의 값이 반환됩니다. 입력 중 어느 것도 double로 변환되지 않은 경우 0이 반환됩니다.

 

Result

Min(Input1, Input2)

78.9

Input1이 double로 변환되지 못했으므로 두 번째 입력 값이 반환됩니다.

Min(Input2, Input3)

-123.11

Min(Input3, Input2)+ Min(Input2, Input1)+Min(Input3, Input1)

(-123.11) + 78.9 + (-123.11) = -167.32

Input1이 double로 변환되지 못했으므로 두 번째 입력 값이 반환됩니다.

(Min(Input1, Input3)*Min(Input2, Input3))*Input2%Abs(Min(Input3, Input1))

((-123.11) * (-123.11)) * 78.9 % 123.11 =

15156.0721 * 78.9 % 123.11 =

1195814.08869 % 123.11 = 46.65869

Input1이 double로 변환되지 못했으므로 두 번째 입력 값이 반환됩니다.

1195814.08869 / 123.11 = 9713.379입니다. 9713은 몫이고 -46.65869는 나머지입니다(1195814.08869 = 123.11 * 9713 + 46.65869이므로).

Math.Round 메서드 기반입니다. double로 변환된 인수가 하나 이상 필요하며, 음의 정수가 아닌 두 번째 인수(선택 사항)가 있을 수 있습니다. 변환에 실패하는 경우 0이 반환됩니다.

두 번째 인수가 제공되지 않은 경우 첫 번째 인수는 가장 가까운 정수로 반올림됩니다. 두 번째 인수가 양의 인수인 경우 첫 번째 인수는 두 번째 인수에 지정된 자릿수로 반올림됩니다. 반올림되는 최대 자릿수는 15입니다. 두 번째 인수에 더 큰 값이 지정되었더라도 15자리로 반올림됩니다. 두 번째 인수를 음의 정수가 아닌 수로 변환할 수 없는 경우 0이 반환됩니다.

 

Result

Round(Input1)

0

double로 변환하지 못했기 때문에 Input1은 0입니다.

Round(Input3, 1)

-123.1

Round(Input3, 5)

-123.11

Round(Input2)*Round(Input3, 1)

-79 * (-123.1) = -9724.9

Round(Input3)/Round(Input2, 17)*Round(Input3)

123 / 78.9 * 123 =

1.5589353 * 123 = 191.74904

Math.Sqrt 메서드 기반입니다. 단일 인수가 필요하며, 이 인수를 double로 변환합니다. 변환에 성공한 경우 제곱근이 반환됩니다. 인수가 음수인 경우 NaN이 반환됩니다. 변환에 실패하는 경우 0이 반환됩니다.

 

Result

Sqrt(Input1)

0

double로 변환하지 못했기 때문에 Input1은 0입니다.

Sqrt(Input2)

8.882567196480981

Sqrt(Input3, 5)

NaN

입력이 음수이기 때문에 Input3은 NaN(숫자가 아님)입니다.

Sqrt(Input1)+Sqrt(Input2)*Sqrt(Input3)

0 + 8.882567196480981 * NaN = NaN

double로 변환하지 못했기 때문에 Input1은 0입니다.

문자열이 음수이기 때문에 Input3은 NaN입니다.

NaN이 포함된 모든 산술 연산은 결과가 NaN입니다.

Sqrt(Input2)+Round(Input3, 1)*Abs(Input1)

8.882567196480981 + (-123.1) * 0 =

8.882567196480981 + (-123.1) = -114.217432803519

double로 변환하지 못했기 때문에 Input1은 0입니다.

(-123.1 * 0): 곱하기의 경우 인수 중 하나만 double로 변환할 수 있으면 해당 인수의 값이 반환됩니다.

산술 식 매핑 작업에서 오류가 발생하면 기본적으로 전체 변환이 중단됩니다. 이 오류 처리 동작은 구성 가능합니다. BizTalk 서비스의 식 - 사용법 및 예오류 및 데이터 처리를 참조하세요.

참고 항목

표시: