MSDN Library
Comprimi il sommario
Espandi il sommario

Esempi di espressioni aritmetiche: Servizi BizTalk

Aggiornamento: agosto 2015

Sono elencati esempi di espressioni aritmetiche disponibili in Servizi BizTalk di Microsoft Azure.

Tutti i valori di input aritmetici sono basati su valori letterari numerici per rappresentare i valori numerici del tipo System.Double di CRL. Gli esempi seguenti illustrano i valori letterali numerici supportati:

  • 100

  • 100,25

  • 0,25

  • ,25

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

  • 1,2e8

  • 1,2e-8; 1,2E-8

ImportantImportante
Il parser Transform non supporta i suffissi che indicano il tipo di dati di un valore letterale numerico. Ad esempio, l'uso di 2L per la rappresentazione come Long non è supportato.

Il metodo Double.TryParse() è usato per verificare che un valore letterale numerico sia un valore doppio valido. In caso contrario, l'argomento sarà convertito in un valore doppio tramite il metodo Convert.ToDouble(). In caso di errori della conversione, il valore sarà zero.

Promemoria relativi alle espressioni aritmetiche:

  • Se un'espressione aritmetica include più di un operatore, saranno valutati prima di tutto la moltiplicazione, la divisione e il modulo. Saranno poi valutate l'addizione e la sottrazione.

  • Usare le parentesi per controllare l'ordine. Ad esempio, l'aggiunta o la sottrazione di valori di input tra parentesi permetterà a questa parte dell'espressione di essere valutata per prima.

  • I valori numerici saranno arrotondati solo se si usa l'arrotondamento in modo specifico.

Le espressioni di esempio seguenti usano i valori di input indicati di seguito:

 

Input1

ab123.456

Input2

78,9

Input3

-123,11

Basata sul metodo Expression.Add. Richiede due argomenti di tipo Double. Se la conversione a Double non riesce, il valore sarà zero e l'operazione sarà eseguita.

 

Espressione Risultato

Input1+Input2

0 + 78,9 = 78,9

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input1+Input2+Input3

0 + 78,9 + (-123,11) = -44,21

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input2+Input3

78,9 + (-123,11) = -44,21

Input1+Input3

0 + (-123,11) = -123,11

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Basata sul metodo Expression.Subtract. Richiede due argomenti di tipo Double. Se la conversione a Double non riesce, il valore sarà zero e l'operazione sarà eseguita.

 

Espressione Risultato

Input1-Input2

0 - 78,9 = -78,9

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input1-Input2-Input3

0 - 78,9 – (-123,11) = 44,21

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input2-Input3

78,9 - (-123,11) = 44,21

Input1-Input3

0 – (-123,11) = 123,11

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

(Input1+Input2)-Input3

(0 + 78,9) – (-123,11) = 202,11

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Basata sul metodo Expression.Multiply. Richiede due argomenti di tipo Double.

Se la conversione a Double non riesce, il valore sarà zero e l'operazione sarà eseguita. Se la conversione di entrambi gli input in un tipo Double ha esito positivo, la moltiplicazione sarà eseguita e il valore sarà restituito. Se solo uno degli input è convertito correttamente in un tipo Double, sarà restituito il valore di tale input. Se nessun input è convertito correttamente in un tipo Double, sarà restituito zero.

 

Espressione Risultato

Input1*Input2

0 * 78,9 = 78,9

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input1*Input2*Input3

0 * 78,9 * (-123,11) = -9713,379

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input2*Input3

78,9 * (-123,11) = -9713,379

Input1*Input3

0 * (-123,11) = -123,11

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

(Input1*Input2)-Input3*Input2

(0 * 78,9) – (-123,11) * 78,9 =

78,9 – (-9713,379) = 9792,279

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Basata sul metodo Expression.Divide. Richiede due argomenti di tipo Double.

Se la conversione a Double non riesce, il valore sarà zero e l'operazione sarà eseguita. Se la conversione di entrambi gli input in un tipo Double ha esito positivo e il valore del denominatore è diverso da zero, la divisione sarà eseguita e il valore sarà restituito. In caso contrario, sarà restituito zero.

 

Espressione Risultato

Input1/Input2

0 / 78,9 = 0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input1/Input2/Input3

0 / 78,9 / (-123,11) = 0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input2/Input3

78,9 / (-123,11) = -0,6408902

Input3/Input1

-123,11 / 0 = 0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Se il denominatore è zero, l'output sarà zero.

(Input1/Input2)-Input2/Input3

(0 / 78,9) – (-123,11 / 78,9) =

0 – (-1,560329531051965) = 1,560329531051965

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Basata sul metodo Expression.Modulo. Richiede due argomenti di tipo Double.

Se la conversione a Double non riesce, il valore sarà zero e l'operazione sarà eseguita. Se la conversione di entrambi gli input in un tipo Double ha esito positivo e il valore del denominatore è diverso da zero, sarà restituito il resto. In caso contrario, sarà restituito zero.

 

Espressione Risultato

Input1%2

0 % 2 = 0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input1+Input2%4

0 + 78,9 % 4 = 2,9

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

78.9 / 4 = 19.725. 19 è il quoziente e 2.9 è il resto poiché 78.9 = 4 * 19 + 2.9

Input2%Input1

78,9 % 0 = 0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input3%Input2

-123,11 % 78,9 = -44,21

-123.11 / 78.9 = -1.560329531051965. -1 è il quoziente e -44.21 è il resto poiché -123.11 = 78.9 * (-1) + (-44.21)

(Input1%Input2)*Input2%Input3

(0 % 78,9) * (78,9 % (-123,11)) =

0 * (78,9) = 0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

78,9 / -123,11 = -0,6408902607424255. -0 è il quoziente e 78,9 è il resto poiché 78,9 = -123,11 * (-0) + 78,9

Basata sul metodo Math.Abs. Richiede un singolo argomento e lo converte in tipo Double. Se la conversione al tipo Double ha esito positivo, restituirà il valore assoluto dell'argomento. In caso contrario, sarà restituito zero.

 

Espressione Risultato

Abs(Input1)

0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

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 poiché la conversione a un tipo Double non è riuscita.

(0*78,9): Analogamente alla moltiplicazione, se solo uno degli argomenti può essere convertito correttamente in Double, sarà restituito il valore di quell'argomento.

6225.21 / 123,11 = 50.566241. 50 è il quoziente e 69.71 è il resto poiché 6225.21 = 123,11 * 50 + 69.71

Basata sul metodo Math.Max. Richiede due argomenti di tipo Double.

Se la conversione di entrambi gli input in un tipo Double ha esito positivo, sarà restituito il valore massimo dei due valori di input. Se solo uno degli input è convertito correttamente in un tipo Double, sarà restituito il valore di tale input. Se nessun input è convertito correttamente in un tipo Double, sarà restituito zero.

 

Espressione Risultato

Max(Input1, Input2)

78,9

La conversione di Input1 in Double non riesce, quindi sarà restituito il secondo valore di input.

Max(Input2, Input3)

78,9

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

78,9 + 78,9 + (-123,11) = 34,69

La conversione di Input1 in Double non riesce, quindi sarà restituito il secondo valore di input.

(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

La conversione di Input1 in Double non riesce, quindi sarà restituito il secondo valore di input.

-766385,6031 / 123,11 = -6225,21. -6225 è il quoziente e -25,8531 è il resto poiché -766385,6031 = 123,11 * (-6225) + (-25,8531)

Basata sul metodo Math.Min. Richiede due argomenti di tipo Double.

Se la conversione di entrambi gli input in un tipo Double ha esito positivo, sarà restituito il valore minimo dei due valori di input. Se solo uno degli input è convertito correttamente in un tipo Double, sarà restituito il valore di tale input. Se nessun input è convertito correttamente in un tipo Double, sarà restituito zero.

 

Espressione Risultato

Min(Input1, Input2)

78,9

La conversione di Input1 in Double non riesce, quindi sarà restituito il secondo valore di input.

Min(Input2, Input3)

-123,11

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

(-123,11) + 78,9 + (-123,11) = -167,32

La conversione di Input1 in Double non riesce, quindi sarà restituito il secondo valore di input.

(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

La conversione di Input1 in Double non riesce, quindi sarà restituito il secondo valore di input.

1195814,08869 / 123,11 = 9713,379. 9713 è il quoziente e -46,65869 è il resto poiché 1195814,08869 = 123,11 * 9713 + 46,65869

Basata sul metodo Math.Round. Richiede almeno un argomento convertito in Double e un secondo argomento facoltativo che deve essere un valore Integer non negativo. Se la conversione non riesce, sarà restituito zero.

Se il secondo argomento non è specificato, il primo argomento sarà arrotondato al più vicino valore Integer. Se il secondo argomento è un valore Integer positivo, il primo argomento sarà arrotondato al numero di cifre specificato nel secondo argomento. Il numero massimo di cifre per l'arrotondamento è 15. Valori superiori per il secondo argomento saranno comunque arrotondati a 15 cifre. Se il secondo argomento non può essere convertito in un valore Integer non negativo, sarà restituito zero.

 

Espressione Risultato

Round(Input1)

0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

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

Basata sul metodo Math.Sqrt. Richiede un singolo argomento e lo converte in tipo Double. Se la conversione ha esito positivo, sarà restituita la radice quadrata. Se l'argomento è un numero negativo, sarà restituito NaN. Se la conversione non riesce, sarà restituito zero.

 

Espressione Risultato

Sqrt(Input1)

0

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Sqrt(Input2)

8,882567196480981

Sqrt(Input3, 5)

NaN

Input3 è NaN (non un numero) poiché l'input è negativo.

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

0 + 8,882567196480981 * NaN = NaN

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

Input3 è NaN poiché la stringa è un numero negativo.

Qualsiasi operazione aritmetica che include un valore NaN avrà come risultato un valore NaN.

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

8,882567196480981 + (-123,1) * 0 =

8,882567196480981 + (-123,1) = -114,217432803519

Input1 è 0 poiché la conversione a un tipo Double non è riuscita.

(-123,1 * 0): Analogamente alla moltiplicazione, se solo uno degli argomenti può essere convertito correttamente in Double, sarà restituito il valore di quell'argomento.

Se si verifica un errore con un'Espressione aritmetica Operazione di mapping, l'intera Transform sarà interrotta per impostazione predefinita. Questo comportamento di gestione degli errori è configurabile. Vedere Gestione degli errori e dei dati in Espressioni nei servizi BizTalk - Uso ed esempi.

Vedere anche

Mostra:
© 2016 Microsoft