Примеры арифметических выражений: Службы BizTalk

Обновлено: Август 2015 г.

Выводит список примеры арифметических выражений в Службы BizTalk Microsoft Azure.

Все арифметические значения входных параметров основаны на числовых литералах для представления числовых значений типа CLR System.Double. Ниже приводятся примеры, демонстрирующие поддерживаемые числовые литералы.

  • 100

  • 100.25

  • 0.25

  • .25

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

  • 1.2e8

  • 1.2e-8, 1.2E-8

ImportantВажно!
Средство анализа Преобразование не поддерживает суффиксы, означающие тип данных числовых литералов. например, использование 2L для представления Long не поддерживается.

Метод Double.TryParse(), используется для проверки, является ли значение числового литерала допустимым значением double. Если значение таковым не является, аргумент преобразуется в double посредством метода Convert.ToDouble(). Если преобразование выполнить не удается, значением будет нуль.

Напоминания логических выражений

  • Если в арифметическим выражении имеется несколько операторов, сначала вычисляются умножение, деление и получение остатка от деления. Затем вычисляются сложение и вычитание.

  • Для сохранения порядке следует использовать круглые скобки. Например, сложение или вычитание значений входа в круглых скобках позволит этой части выражения быть вычисленной первой.

  • Округление числовых значений выполняется только при использовании функции округления.

Далее приводятся некоторые образцы выражений, использующих следующие значения входа.

 

Input1

ab123.456

Input2

78.9

Input3

-123.11

Основой служит метод Expression.Add. Требуется два аргумента типа double. Если не удается выполнить преобразование в double, значение будет равно нулю и операция будет выполнена.

 

Выражение Результат

Input1+Input2

0 + 78.9 = 78.9

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input1+Input2+Input3

0 + 78.9 + (-123.11) = -44.21

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input2+Input3

78.9 + (-123.11) = -44.21

Input1+Input3

0 + (-123.11) = -123.11

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Основой служит метод Expression.Subtract. Требуется два аргумента типа double. Если не удается выполнить преобразование в double, значение будет равно нулю и операция будет выполнена.

 

Выражение Результат

Input1-Input2

0 - 78.9 = -78.9

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input1-Input2-Input3

0 - 78.9 – (-123.11) = 44.21

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input2-Input3

78.9 - (-123.11) = 44.21

Input1-Input3

0 – (-123.11) = 123.11

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

(Input1+Input2)-Input3

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

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Основой служит метод Expression.Multiply. Требуется два аргумента типа double.

Если не удается выполнить преобразование в double, значение будет равно нулю и операция будет выполнена. Если оба входных параметра успешно преобразуются в double, будет выполнено умножение и возвращено соответствующее значение. Если в double преобразуется только один входной параметр, возвращается значение именно этого параметра. Если в double не удалось преобразоваться ни одному входному параметру, возвращается нуль.

 

Выражение Результат

Input1*Input2

0 * 78.9 = 78.9

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input1*Input2*Input3

0 * 78.9 * (-123.11) = -9713.379

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input2*Input3

78.9 * (-123.11) = -9713.379

Input1*Input3

0 * (-123.11) = -123.11

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

(Input1*Input2)-Input3*Input2

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

78.9 – (-9713.379) = 9792.279

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Основой служит метод Expression.Divide. Требуется два аргумента типа double.

Если не удается выполнить преобразование в double, значение будет равно нулю и операция будет выполнена. Если оба входных параметра успешно преобразуются в double и значение знаменателя отлично от нуля, будет выполнено деление и возвращено соответствующее значение. Иначе возвращается нуль.

 

Выражение Результат

Input1/Input2

0 / 78.9 = 0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input1/Input2/Input3

0 / 78.9 / (-123.11) = 0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input2/Input3

78.9 / (-123.11) = -0.6408902

Input3/Input1

-123.11 / 0 = 0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Если знаменатель равен нулю, результатом будет нуль.

(Input1/Input2)-Input2/Input3

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

0 – (-1.560329531051965) = 1.560329531051965

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Основой служит метод Expression.Modulo. Требуется два аргумента типа double.

Если не удается выполнить преобразование в double, значение будет равно нулю и операция будет выполнена. Если оба входных параметра успешно преобразуются в double и значение знаменателя отлично от нуля, будет выполнен возврат остатка. Иначе возвращается нуль.

 

Выражение Результат

Input1%2

0 % 2 = 0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input1+Input2%4

0 + 78.9 % 4 = 2.9

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

78,9 / 4 = 19,725; 19 — частное, а 2,9 — остаток, поскольку 78,9 = 4 * 19 + 2,9

Input2%Input1

78.9 % 0 = 0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

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

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

78,9 / -123,11 = -0,6408902607424255; -0 — частное, а 78,9 — остаток, поскольку 78,9 = -123,11 * (-0) + 78,9

Основой служит метод Math.Abs. Требует один аргумент и преобразует его в double. При успешном преобразовании в double возвращается абсолютное значение аргумента. Иначе возвращается нуль.

 

Выражение Результат

Abs(Input1)

0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

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

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

(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 не удалось преобразоваться ни одному входному параметру, возвращается нуль.

 

Выражение Результат

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 не удалось преобразоваться ни одному входному параметру, возвращается нуль.

 

Выражение Результат

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, и дополнительный второй аргумент, который должен быть неотрицательным целым числом. Если выполнить преобразование не удается, возвращается нуль.

Если второй аргумент отсутствует, первый аргумент округляется до ближайшего целого числа. Если второй аргумент является положительным целым числом, первый аргумент округляется до количества знаков, указанных во втором аргументе. Округление выполняется до максимум 15 знаков. При более высоких значениях второго аргумента округление также выполняется до 15 знаков. Если второй аргумент не удается преобразовать в неотрицательное целое число, возвращается нуль.

 

Выражение Результат

Round(Input1)

0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

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 (не число). Если выполнить преобразование не удается, возвращается нуль.

 

Выражение Результат

Sqrt(Input1)

0

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Sqrt(Input2)

8.882567196480981

Sqrt(Input3, 5)

NaN

Input3 не является числом (NaN), поскольку входное значение является отрицательным.

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

0 + 8,882567196480981 * NaN = NaN

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

Input3 не является числом (NaN), поскольку строка является отрицательным числом.

Результатом любой арифметической операции с NaN будет NaN.

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

8.882567196480981 + (-123.1) * 0 =

8.882567196480981 + (-123.1) = -114.217432803519

Input1 имеет значение 0, поскольку не удалось выполнить преобразование в double.

(-123.1 * 0): При выполнении умножения следует помнить, что если в double преобразуется только один из аргументов, возвращается значение именно этого аргумента.

Если в арифметическом выражении Операция сопоставления происходит ошибка, по умолчанию отменяется всеПреобразование. Это поведение обработки ошибок можно настраивать. См. подраздел Обработка ошибок и данных в разделе Выражения в службах BizTalk — использование и примеры

См. также

Показ: