Exportar (0) Imprimir
Expandir Tudo

Exemplos de expressão aritmética: Serviços do BizTalk

Atualizado: junho de 2014

Lista exemplos de Expressões Aritméticas na Serviços BizTalk do Microsoft Azure.

Todos os valores de entrada aritméticos são baseados em Literais Numéricos para representar valores numéricos do tipo System.Double de CLR. Abaixo estão alguns exemplos que demonstram os literais numéricos com suporte:

  • 100

  • 100.25

  • 0.25

  • .25

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

  • 1.2e8

  • 1.2e-8, 1.2E-8

ImportantImportante
O analisador Transformação não dá suporte a sufixos que indicam o tipo de dados de um literal numérico. Por exemplo, o uso de 2L para ser representado como Longo não tem suporte.

O método Double.TryParse() é usado para verificar se um valor literal numérico é um valor duplo válido. Se não for um valor duplo válido, o argumento será convertido em um duplo usando o método Convert.ToDouble(). Se a conversão falhar, o valor será zero.

Lembretes sobre expressões aritméticas:

  • Se uma expressão aritmética tiver mais de um operador, multiplicação, divisão e módulo serão avaliados primeiro. Em seguida, a adição e a subtração serão avaliadas.

  • Use parênteses para controlar a ordem. Por exemplo, adicionar ou subtrair valores de entrada entre parênteses permitirá que essa parte da expressão seja avaliada primeiro.

  • Os Valores Numéricos não são arredondados, a menos que Round seja usado especificamente.

Veja a seguir algumas expressões de exemplo usando os seguintes valores de entrada:

 

Entrada1

ab123.456

Entrada2

78.9

Entrada3

-123.11

Baseado no método Expression.Add. Exige dois argumentos de tipo duplo. Se a conversão em duplo falhar, o valor será igual a zero, e a operação será realizada.

 

Expressão Resultado

Entrada1+Entrada2

0 + 78.9 = 78.9

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada1+Entrada2+Entrada3

0 + 78.9 + (-123.11) = -44.21

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada2+Entrada3

78.9 + (-123.11) = -44.21

Entrada1+Entrada3

0 + (-123.11) = -123.11

Entrada1 é 0 porque a conversão em um duplo falhou.

Baseado no método Expression.Subtract. Exige dois argumentos de tipo duplo. Se a conversão em duplo falhar, o valor será igual a zero, e a operação será realizada.

 

Expressão Resultado

Entrada1-Entrada2

0 - 78.9 = -78.9

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada1-Entrada2-Entrada3

0 - 78.9 – (-123.11) = 44.21

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada2-Entrada3

78.9 - (-123.11) = 44.21

Entrada1-Entrada3

0 – (-123.11) = 123.11

Entrada1 é 0 porque a conversão em um duplo falhou.

(Entrada1+Entrada2)-Entrada3

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

Entrada1 é 0 porque a conversão em um duplo falhou.

Baseado no método Expression.Multiply. Exige dois argumentos de tipo duplo.

Se a conversão em duplo falhar, o valor será igual a zero, e a operação será realizada. Se ambas as entradas forem convertidas com êxito em duplo, a multiplicação ocorrerá, e o valor será retornado. Se apenas uma das entradas for convertida com êxito em duplo, o valor dessa entrada será retornado. Se nenhuma das entradas for convertida com êxito em duplo, zero será retornado.

 

Expressão Resultado

Entrada1*Entrada2

0 * 78.9 = 78.9

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada1*Entrada2*Entrada3

0 * 78.9 * (-123.11) = -9713.379

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada2*Entrada3

78.9 * (-123.11) = -9713.379

Entrada1*Entrada3

0 * (-123.11) = -123.11

Entrada1 é 0 porque a conversão em um duplo falhou.

(Entrada1*Entrada2)-Entrada3*Entrada2

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

78.9 – (-9713.379) = 9792.279

Entrada1 é 0 porque a conversão em um duplo falhou.

Baseado no método Expression.Divide. Exige dois argumentos de tipo duplo.

Se a conversão em duplo falhar, o valor será igual a zero, e a operação será realizada. Se ambas as entradas forem convertidas com êxito em duplo e o valor do denominador for diferente de zero, a divisão ocorrerá, e o valor será retornado. Caso contrário, zero será retornado.

 

Expressão Resultado

Entrada1/Entrada2

0 / 78.9 = 0

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada1/Entrada2/Entrada3

0 / 78.9 / (-123.11) = 0

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada2/Entrada3

78.9 / (-123.11) = -0.6408902

Entrada3/Entrada1

-123.11 / 0 = 0

Entrada1 é 0 porque a conversão em um duplo falhou.

Quando o denominador for zero, a saída será zero.

(Entrada1/Entrada2)-Entrada2/Entrada3

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

0 – (-1.560329531051965) = 1.560329531051965

Entrada1 é 0 porque a conversão em um duplo falhou.

Baseado no método Expression.Modulo. Exige dois argumentos de tipo duplo.

Se a conversão em duplo falhar, o valor será igual a zero, e a operação será realizada. Se ambas as entradas forem convertidas com êxito em duplo e o valor do denominador não for zero, o resto será retornado. Caso contrário, zero será retornado.

 

Expressão Resultado

Entrada1%2

0 % 2 = 0

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada1+Entrada2%4

0 + 78.9 % 4 = 2.9

Entrada1 é 0 porque a conversão em um duplo falhou.

78,9/4 = 19,725; 19 é o quociente e 2,9 é o resto, porque 78,9 = 4 * 19 + 2,9

Entrada2%Entrada1

78.9 % 0 = 0

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada3%Entrada2

-123.11 % 78.9 = -44.21

-123,11/78,9 = -1,560329531051965; -1 é o quociente e -44,21 é o resto, porque -123,11 = 78,9 * (-1) + (-44,21)

(Entrada1%Entrada2)*Entrada2%Entrada3

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

0 * (78.9) = 0

Entrada1 é 0 porque a conversão em um duplo falhou.

78,9/-123,11 = -0,6408902607424255; -0 é o quociente e o resto é 78,9 porque 78,9 = -123,11 * (-0) + 78,9

Baseado no método Math.Abs. Requer um único argumento e o converte em duplo. Se a conversão em duplo for bem-sucedida, ela retornará o valor absoluto do argumento. Caso contrário, zero será retornado.

 

Expressão Resultado

Abs(Entrada1)

0

Entrada1 é 0 porque a conversão em um duplo falhou.

Abs(Entrada2)

78.9

Abs(Entrada3)

123.11

Abs(Entrada1)+Abs(Entrada2)+Abs(Entrada3)

0 + 78.9 + 123.11 = 202.01

(Abs(Entrada1)*Abs(Entrada2))*Entrada2%Abs(Entrada3)

(0*78.9) * 78.9 % 123.11 =

78.9 * 78.9 % 123.11 =

6225.21 % 123.11 = 69.71

Entrada1 é 0 porque a conversão em um duplo falhou.

(0*78.9): Lembre-se de que, com a multiplicação, se apenas um dos argumentos puder ser convertido com êxito em duplo, o valor desse argumento será retornado.

6225,21/123,11 = 50,566241; 50 é o quociente e 69,71 é o resto, porque 6225,21 = 123,11 * 50 + 69,71

Baseado no método Math.Max. Exige dois argumentos de tipo duplo.

Se ambas as entradas forem convertidas com êxito em duplo, o valor máximo dos dois valores de entrada será retornado. Se apenas uma das entradas for convertida com êxito em duplo, o valor dessa entrada será retornado. Se nenhuma das entradas for convertida com êxito em duplo, zero será retornado.

 

Expressão Resultado

Max(Entrada1, Entrada2)

78.9

Entrada1 falha na conversão em duplo e, portanto, o segundo valor de entrada é retornado.

Max(Entrada2, Entrada3)

78.9

Max(Entrada3, Entrada2)+Max(Entrada2, Entrada1)+Max(Entrada3, Entrada1)

78.9 + 78.9 + (-123.11) = 34.69

Entrada1 falha na conversão em duplo e, portanto, o segundo valor de entrada é retornado.

(Max(Entrada1, Entrada3)*Max(Entrada2, Entrada3))* Entrada2%Abs(Max(Entrada3, Entrada1))

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

-9713.379 * 78.9 % 123.11 =

-766385.6031 % 123.11 = -25.8531

Entrada1 falha na conversão em duplo e, portanto, o segundo valor de entrada é retornado.

-766385,6031/123,11 = -6225,21; -6225 é o quociente e -25,8531 é o resto, porque -766385,6031 = 123,11 * (-6225) + (-25,8531)

Baseado no método Math.Min. Exige dois argumentos de tipo duplo.

Se ambas as entradas forem convertidas com êxito em duplo, o valor mínimo dos dois valores de entrada será retornado. Se apenas uma das entradas for convertida com êxito em duplo, o valor dessa entrada será retornado. Se nenhuma das entradas for convertida com êxito em duplo, zero será retornado.

 

Expressão Resultado

Min(Entrada1, Entrada2)

78.9

Entrada1 falha na conversão em duplo e, portanto, o segundo valor de entrada é retornado.

Min(Entrada2, Entrada3)

-123.11

Min(Entrada3, Entrada2)+ Min(Entrada2, Entrada1)+Min(Entrada3, Entrada1)

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

Entrada1 falha na conversão em duplo e, portanto, o segundo valor de entrada é retornado.

(Min(Entrada1, Entrada3)*Min(Entrada2, Entrada3))*Entrada2%Abs(Min(Entrada3, Entrada1))

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

15156.0721 * 78.9 % 123.11 =

1195814,08869 % 123,11 = 46,65869

Entrada1 falha na conversão em duplo e, portanto, o segundo valor de entrada é retornado.

1195814,08869/123,11 = 9713,379; 9713 é o quociente e -46,65869 é o resto, porque 1195814,08869 = 123,11 * 9713 + 46,65869

Baseado no método Math.Round. Requer pelo menos um argumento que é convertido em duplo e um segundo argumento opcional que deve ser um número inteiro não negativo. Se a conversão falhar, zero será retornado.

Se o segundo argumento não for fornecido, o primeiro argumento será arredondado para o número inteiro mais próximo. Se o segundo argumento for um inteiro positivo, o primeiro argumento será arredondado para o número de dígitos especificado no segundo argumento. O número máximo de dígitos a serem arredondados é 15. Valores mais elevados para o segundo argumento ainda resultarão em arredondamento em 15 casas. Se o segundo argumento não puder ser convertido em um número inteiro não negativo, zero será retornado.

 

Expressão Resultado

Round(Entrada1)

0

Entrada1 é 0 porque a conversão em um duplo falhou.

Round(Entrada3, 1)

-123.1

Round(Entrada3, 5)

-123.11

Round(Entrada2)*Round(Entrada3, 1)

-79 * (-123.1) = -9724.9

Round(Entrada3)/Round(Entrada2, 17)*Round(Entrada3)

123 / 78.9 * 123 =

1.5589353 * 123 = 191.74904

Baseado no método Math.Sqrt. Requer um único argumento e o converte em duplo. Se a conversão for bem-sucedida, a raiz quadrada será retornada. Se o argumento for um número negativo, NaN será retornado. Se a conversão falhar, zero será retornado.

 

Expressão Resultado

Sqrt(Entrada1)

0

Entrada1 é 0 porque a conversão em um duplo falhou.

Sqrt(Entrada2)

8.882567196480981

Sqrt(Entrada3, 5)

NaN

Entrada3 é NaN (Não é um Número), pois a entrada é negativa.

Sqrt(Entrada1)+Sqrt(Entrada2)*Sqrt(Entrada3)

0 + 8,882567196480981 * NaN = NaN

Entrada1 é 0 porque a conversão em um duplo falhou.

Entrada3 é NaN porque a cadeia de caracteres é um número negativo.

Qualquer operação aritmética que envolva NaN resultará em NaN.

Sqrt(Entrada2)+Round(Entrada3, 1)*Abs(Entrada1)

8.882567196480981 + (-123.1) * 0 =

8.882567196480981 + (-123.1) = -114.217432803519

Entrada1 é 0, porque a conversão em duplo falha.

(-123.1 * 0): Lembre-se de que, com a multiplicação, se apenas um dos argumentos puder ser convertido com êxito em duplo, o valor desse argumento será retornado.

Se ocorrer um erro com a Operação de mapeamento de uma Expressão Aritmética, por padrão, será anulada toda a Transformação. Este comportamento de tratamento de erros é configurável. Consulte Tratamento de erros e dados em Expressões nos Serviços de BizTalk - Uso e Exemplos.

Consulte também

Mostrar:
© 2014 Microsoft