Avaliador de expressões
Calcule o resultado de uma expressão com números inteiros, decimais, variáveis numéricas, variáveis de string para comparações de strings, operadores aritméticos e Boolianos ou um conjunto de funções.
Propriedades
Propriedade | Descrição |
---|---|
Expressão | A expressão a ser calculada. A expressão pode conter um número ilimitado de parênteses abertos e fechados corretamente. Se a expressão não seguir a sintaxe correta, o conversor não realizará o cálculo. |
Modo | A direção do vínculo dinâmico:
|
Origem
Uma ou mais variáveis identificadas por:
- Espaço reservado{index_number}
- Inteiro progressivo igual ou maior que zero. Por exemplo{1}
- Espaço reservado{#placeholder_identifier}
- String prefixada com#. Por exemplo{#speed}
DICA:
Use qualquer combinação de espaços reservados em qualquer ordem. Use qualquer número de espaços reservados na expressão.
Literais
- Boolianos.
- Inteiros.
- Decimais onde o separador decimal deve ser um ponto.
- Números hexadecimais com o prefixo0x.
- Texto como uma string delimitada por aspas duplas.DICA: Aspas duplas repetidas duas vezes ("") são interpretadas como uma sequência de escape.
- Data e hora. Por exemplo,2017-06-28T15:26:06.0790910.
Operadores
Categoria | Operador | Associatividade | Comentários |
---|---|---|---|
Unário | Unário negativo: - NOT bit a bit: ~ Operador de conversão: (type) | Direita para a esquerda | O operador de conversão (type) se aplica a todos os tipos de dados numéricos e somente Booliano. |
Multiplicativo | * ,/ , % | Esquerda para a direita | |
Aditivo | + , - | Esquerda para a direita | |
Deslocamento | << , >> | Esquerda para a direita | Os operadores Deslocamento e Relacional se aplicam a estes tipos de dados:
|
Relacional | < , <= , > , >= | Esquerda para a direita | |
Igualdade | == , != | Esquerda para a direita | Os operadores Igualdade se aplicam a estes tipos de dados:
|
AND, XOR, OR bit a bit | & , ^ , | | Esquerda para a direita | |
AND lógico | && | Esquerda para a direita | |
OR lógico | || | Esquerda para a direita |
Tipos de dados
Convenções de tipo de dados no avaliador de expressões:
- Inteiros literais são Int32.
- Literais decimais são Double.
- Valores numéricos são considerados Int32.
- Literais verdadeiros e falsos são interpretados como Boolean.
- O operador / sempre retorna um valor Double.
- O operador % gera uma exceção quando há divisão por módulo zero.
- O operador % aceita operandos Float e Double.
- Todas as funções retornam um valor Double exceto pelo sinal, o que retorna um valor Int32.
O
type
de operadores de conversão unários pode ser destes tipos de dados:- bool, Boolean
- sbyte, SByte
- short, Int16
- int, Int32
- long, Int64
- byte, Byte
- ushort, UInt16
- uint, UInt32
- ulong, UInt64
- float, Float
- double, Double
Operadores aplicados a tipos de dados específicos:
Operador | Operando1 | Operando2 | Descrição |
---|---|---|---|
Mais | DateTime | Número integral | Operand2 é interpretado como milissegundos. |
Mais | Número integral | DateTime | Operand1 é interpretado como milissegundos. |
Mais | DateTime | TimeZone (Estrutura) | Operand2 é interpretado como minutos (TimeZone.Offset). |
Mais | TimeZone (Estrutura) | DateTime | Operand1 é interpretado como minutos (TimeZone.Offset). |
Mais | TimeZone | Número integral | Operand1 é interpretado como minutos (TimeZone.Offset).Operand2 é interpretado como minutos. |
Mais | Número integral | TimeZone | Operand1 é interpretado como minutos.Operand2 é interpretado como minutos (TimeZone.Offset). |
Menos | DateTime | Número integral | Operand2 é interpretado como milissegundos. |
Menos | DateTime | TimeZone (Estrutura) | Operand2 é interpretado como minutos (TimeZone.Offset). |
Menos | TimeZone | Número integral | Operand1 é interpretado como minutos (TimeZone.Offset).Operand2 é interpretado como minutos. |
Funções
Funções para uso no avaliador de expressões:
Função | Sintaxe | Descrição | Tipo de dados de retorno |
---|---|---|---|
max | max( value1 , value2 , value3 , ...) | Retorna o valor mais ato. | Double |
min | min( value1 , value2 , value3 , ...) | Retorna o valor mais baixo. | Double |
avg | avg( value1 , value2 , value3 , ...) | Retorna a média dos valores determinados. | Double |
abs | abs( value ) | Retorna o valor absoluto do número determinado. | Double |
trunc | trunc( value ) | Retorna a parte inteira de um número decimal. | Double |
ceil | ceil( value ) | Retorna o valor aproximado para mais. | Double |
floor | floor( value ) | Retorna o valor aproximado para menos. | Double |
round | round( value ) | Retorna a aproximação ao inteiro mais próximo. | Double |
sqrt | sqrt( value ) | Retorna a raiz quadrada do número determinado. | Double |
sign | sign( value ) | Verifica se o número de ponto flutuante determinado é negativo. Retorna 0 se verdadeiro ou 1 se falso. | Int32 |
like | like( string_value , pattern ) | Retorna verdadeiro se o parâmetro string_value corresponder ao pattern . | Boolean |
isempty | isempty( variable ) | Verifica se um determinado NodeID, String, LocalizedText ou DataTime está vazio. | Boolean |
if | if( condition , value_if_true , value_if_false ) | Verifica se os parâmetros value_if_true e value_if_false são do mesmo tipo de dados. | Tipo de dados do value_if_true |
left_of | left_of(string, pattern) | Retorna a substring à esquerda da primeira ocorrência do padrão de expressão regular.
IMPORTANTE:
Não use curingas em padrões.
| String |
right_of | right_of(string, pattern) | Retorna a substring à direita da primeira ocorrência do padrão de expressão regular.
IMPORTANTE:
Não use curingas em padrões.
| String |
Output
O valor resultante da expressão.
Exemplo
Dê sua opinião