O LATROMI 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 com o tempo poderá ser implementada em outras partes do sistema.
Operadores
As expressões podem ser combinadas usando operadores. Cada operador possui uma prioridade de precedência. Segue abaixo a lista de prioridades entre os operadores:
- primários
- unários
- potência
- multiplicativos
- aditivos
- relacionais
- lógicos
Lógicos
Estes operadores podem fazer alguma comparação lógica entre outras expressões:
-
or,|| -
and,&&
Exemplo:
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
-
=,==,!=,<> -
<,<=,>,>=
Exemplo:
1 < 2
Aditivos
+,-
Exemplo:
1 + 2 - 3
Multiplicativos
*,/,%
Exemplo:
1 * 2 % 3
Bit-a-bit
&(bitwise and),|(bitwise or),^(bitwise xor),<<(left shift),>>(right shift)
Exemplo:
2 >> 3
Unários
!,not,-,~(bitwise not)
Exemplo:
not true
Primários
-
(,) -
valores
Exemplo:
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.
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.