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.