エクスポート (0) 印刷
すべて展開

算術式の例:BizTalk サービス

更新日: 2014年6月

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 になります。

算術式に関する覚え書き:

  • 算術式に複数の演算子が含まれる場合、乗算除算、および剰余が最初に評価されます。その後、加算と減算が評価されます。

  • 順序を制御するには、かっこを使用します。たとえば、かっこ内で入力値を加算または減算すると、式のこの部分が最初に評価されます。

  • Round を明示的に使用しない限り、数値は丸められません。

次に示すサンプルの式では、次の入力値を使用しています。

 

Input1

ab123.456

Input2

78.9

Input3

-123.11

Expression.Add メソッドに基づきます。double 型の 2 つの引数を必要とします。double 型への変換が失敗した場合、値を 0 として演算が実行されます。

 

結果

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 型の 2 つの引数を必要とします。double 型への変換が失敗した場合、値を 0 として演算が実行されます。

 

結果

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 型の 2 つの引数を必要とします。

double 型への変換が失敗した場合、値を 0 として演算が実行されます。両方の入力が double 型に正常に変換された場合、乗算が実行され、値が返されます。どちらかの入力のみが double 型に正常に変換された場合、その入力の値が返されます。2 つの入力のどちらも double 型に正常に変換されなかった場合、0 が返されます。

 

結果

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 型の 2 つの引数を必要とします。

double 型への変換が失敗した場合、値を 0 として演算が実行されます。両方の入力が double 型に正常に変換され、かつ分母値が 0 以外の場合、除算が実行され、値が返されます。それ以外の場合、0 が返されます。

 

結果

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 型の 2 つの引数を必要とします。

double 型への変換が失敗した場合、値を 0 として演算が実行されます。両方の入力が double 型に正常に変換され、かつ分母値が 0 以外の場合、剰余が返されます。それ以外の場合、0 が返されます。

 

結果

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 メソッドに基づきます。1 つの引数を必要とし、これを double 型に変換します。double 型への変換が成功した場合、引数の絶対値が返されます。それ以外の場合、0 が返されます。

 

結果

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 型の 2 つの引数を必要とします。

両方の入力が double 型に正常に変換された場合、2 つの入力値の最大値が返されます。どちらかの入力のみが double 型に正常に変換された場合、その入力の値が返されます。2 つの入力のどちらも double 型に正常に変換されなかった場合、0 が返されます。

 

結果

Max(Input1, Input2)

78.9

Input1 の double 型への変換が失敗するため、2 つ目の入力値が返されます。

Max(Input2, Input3)

78.9

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

78.9 + 78.9 + (-123.11) = 34.69

Input1 の double 型への変換が失敗するため、2 つ目の入力値が返されます。

(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 型への変換が失敗するため、2 つ目の入力値が返されます。

-766385.6031 / 123.11 = -6225.21。-6225 が商、-25.8531 が剰余となります (-766385.6031 = 123.11 * (-6225) + (-25.8531))。

Math.Min メソッドに基づきます。double 型の 2 つの引数を必要とします。

両方の入力が double 型に正常に変換された場合、2 つの入力値の最小値が返されます。どちらかの入力のみが double 型に正常に変換された場合、その入力の値が返されます。2 つの入力のどちらも double 型に正常に変換されなかった場合、0 が返されます。

 

結果

Min(Input1, Input2)

78.9

Input1 の double 型への変換が失敗するため、2 つ目の入力値が返されます。

Min(Input2, Input3)

-123.11

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

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

Input1 の double 型への変換が失敗するため、2 つ目の入力値が返されます。

(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 型への変換が失敗するため、2 つ目の入力値が返されます。

1195814.08869 / 123.11 = 9713.379。9713 が商、-46.65869 が剰余となります (1195814.08869 = 123.11 * 9713 + 46.65869)。

Math.Round メソッドに基づきます。double 型に変換される 1 つ以上の引数と、オプションで負でない整数である 2 つ目の引数を必要とします。変換が失敗した場合、0 が返されます。

2 つ目の引数を指定しない場合、1 つ目の引数が最も近い整数に丸められます。2 つ目の引数が正の整数の場合、2 つ目の引数で指定された桁数に 1 つ目の引数が丸められます。丸められる桁数は最大で 15 桁です。2 つ目の引数にそれよりも大きな値を指定しても、15 桁で丸められます。2 つ目の引数を負でない整数に変換できない場合、0 が返されます。

 

結果

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 メソッドに基づきます。1 つの引数を必要とし、これを double 型に変換します。成功した場合、平方根が返されます。引数が負の数の場合、NaN が返されます。変換が失敗した場合、0 が返されます。

 

結果

Sqrt(Input1)

0

double 型への変換が失敗するため、Input1 は 0 になります。

Sqrt(Input2)

8.882567196480981

Sqrt(Input3, 5)

NaN

入力が負の値のため、Input3 は NaN (Not a Number) になります。

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 サービスでの式 - 使用法と例」の「エラーとデータの処理」を参照してください。

関連項目

表示:
© 2014 Microsoft