Expressões Matemáticas
O LATROMI WecDB utiliza a biblioteca NCalc para compilar e interpretar expressões matemáticas dinâmicas. Atualmente, essas expressões são utilizadas apenas no rodapé da Consulta com saída em Grid, mas como o tempo poderá ser implementada em outras partes do sistema.
OBS: Os textos das tabelas abaixo foram traduzidos da página do projeto NCalc do Codeplex.
Índice
Operadores
As expressões podem ser combinadas usando operadores. Cada operador possui um prioridade de precedência. Segue abaixo a lista de prioridades entre os operadores:
- primary
- unary
- power
- multiplicative
- additive
- relational
- logical
Lógicos
Estes operadores podem fazer alguma comparação lógica entre outras expressões:
- or, ||
- and, &&
true or false and true
O operador and tem mais prioridade do que o or, assim como mostra o exemplo acima, true e false são avaliados primeiro.
Relacionais
- =, ==, !=, <>
- <, <=, >, >=
1 < 2
Aditivos
- +, -
1 + 2 - 3
Multiplicativos
- *, /, %
1 * 2 % 3
Bit-a-bit
- & (bitwise and), | (bitwise or), ^(bitwise xor), << (left shift), >>(right shift)
2 >> 3
Unários
- !, not, -, ~ (bitwise not)
not true
Primários
- (, )
- valores
2 * ( 3 + 2 )
Funções
Abaixo a lista de funções matemáticas disponíveis para uso.
Nome | Descrição | Uso | Resultado |
---|---|---|---|
Abs | Retorna o valor absoluto do número especificado. | Abs(-1) | 1 |
Acos | Retorna o ângulo cosseno do número especificado. | Acos(1) | 0 |
Asin | Retorna o ângulo seno do número especificado. | Asin(0) | 0 |
Atan | Retorna o ângulo tangente número especificado. | Atan(0) | 0 |
Ceiling | Retorna o menor número inteiro maior ou igual ao número especificado. | Ceiling(1.5) | 2 |
Cos | Retorna o cosseno do ângulo especificado. | Cos(0) | 1 |
Exp | Retorna o valor elevado a potência especificada. | Exp(0) | 1 |
Floor | Retorna o maior inteiro menor ou igual ao número especificado. | Floor(1.5) | 1 |
Log | Retorna o logaritmo do número especificado. | Log(1,10) | 0 |
Log10 | Retorna o logaritmo de base 10 do número especificado. | Log10(1) | 0 |
Max | Retorna o maior dos dois números especificados. | Max(1, 2) | 2 |
Min | Retorna o menor dos dois números especificados. | Min(1, 2) | 1 |
Pow | Retorna o número especificado elevado a potência especificada. | Pow(3, 2) | 9 |
Round | Arredonda um valor para o número inteiro mais próximo ou o número especificado de casas decimais. | Round(3.222, 2) | 3.22 |
Sign | Retorna um valor indicando o sinal do número especificado. | Sign(-10) | -1 |
Sin | Retorna o seno do ângulo especificado. | Sin(0) | 0 |
Sqrt | Retorna a raiz quadrada do número especificado. | Sqrt(4) | 2 |
Tan | Retorna a tangente do ângulo especificado. | Tan(0) | 0 |
Truncate | Retorna a parte inteira do número especificado. | Truncate(1.7) | 1 |
Também estão disponíveis outras funções de uso gerais.
Nome | Descrição | Uso | Resultado |
---|---|---|---|
in | Retorna true se o elemento está contido no conjunto de valores. | in(1 + 1, 1, 2, 3) | true |
if | Retorna um valor baseado em uma condição | if(3 % 2 = 1, 'value is true', 'value is false') | 'value is true' |
Parâmetros
Os parâmetros são marcações dentro da expressão que serão substituídas por algum valor. São representadas por um texto (nome do parâmetro) entre colchetes. Segue abaixo um exemplo
Pow([B], 2) - 4 * [A] * [C]
No exemplo acima, temos os parâmetros A, B e C que devem ser substituídos por algum valor antes da expressão ser avaliada.