O que é NCalc?
NCalc é uma biblioteca avançada para avaliação de expressões matemáticas suportando uma ampla gama de operações. Ela aceita desde contas simples (como 1 + 1) até expressões com condições, variáveis e funções personalizadas. Na Groner, usamos NCalc para calcular custos extras baseando-se em parâmetros variáveis e condições específicas.
Sintaxe Básica
A sintaxe do NCalc é intuitiva, facilitando a elaboração de expressões complexas. Por exemplo, uma simples adição se parece com isso: 1 + 1. Para cálculos de custos extras, a expressão pode se expandir para incorporar variáveis e funções, como [[CustoBase]] * (1 + [[TaxaExtra]]).
🧠 Funções lógicas / condicionais
If(se)
Descrição: Retorna um valor com base em uma condição.
Exemplo: if([[kwPSimulacao]]<=10,[[kwPSimulacao]]*250,[[kwPSimulacao]]*200)
Neste exemplo o kWp do projeto será testado e multiplicado por R$ 250,00 caso seja menor ou igual a 10 e caso seja maior que 10 sera multiplicado por R$ 200,00.
ifs(ses)
Descrição: Avalia múltiplas condições em ordem e retorna o valor correspondente à primeira que for verdadeira. (Se nenhuma for, retorna o valor padrão.)
Exemplo: ifs([[QuantidadePlacasSimulacao]]<=25,[[QuantidadePlacasSimulacao]] *90, [[QuantidadePlacasSimulacao]]<=50,[[QuantidadePlacasSimulacao]]*80, [[QuantidadePlacasSimulacao]]*70)
Neste exemplo, o valor por placa varia conforme a quantidade total de placas no projeto:
– Até 25 placas: R$ 90,00 por unidade
– De 26 a 50 placas: R$ 80,00 por unidade
– Acima de 50 placas: R$ 70,00 por unidade
🔢 Funções matemáticas
Ceiling
Descrição: Arredonda x para cima, para o inteiro mais próximo.
Exemplo: Ceiling(1.5) retorna 2.
Floor
Descrição: Arredonda x para baixo, para o inteiro mais próximo.
Exemplo: Floor(1.5) retorna 1.
Abs
Descrição: Retorna o valor absoluto de um número especificado.
Exemplo: Abs(-5) retorna 5.
Acos, Asin, Atan
Descrição: Estas funções retornam, respectivamente, os ângulos cujos cosseno, seno ou tangente são os números especificados.
Exemplo: Acos(1) retorna 0 (em radianos).
Cos, Sin, Tan
Descrição: Calculam, respectivamente, o cosseno, seno ou tangente de um ângulo especificado (em radianos).
Exemplo: Cos(0) retorna 1.
Exp
Descrição: Retorna e elevado à potência x (e^x).
Exemplo: Exp(1) retorna aproximadamente 2.71828.
Log, Log10
Descrição: Log retorna o logaritmo de um número em uma base especificada, enquanto Log10 retorna o logaritmo base 10.
Exemplo: Log(10, 10) e Log10(10) ambos retornam 1.
Pow
Descrição: Retorna um número especificado elevado à potência de outro número. Exemplo: Pow(2, 3) retorna 8.
Sqrt
Descrição: Retorna a raiz quadrada de um número especificado.
Exemplo: Sqrt(4) retorna 2.
🔧Funções de Utilidade
Round
Descrição: Arredonda um valor para o número inteiro mais próximo ou um número específico de casas decimais.
Exemplo: Round(3.14159, 2) retorna 3.14.
Truncate
Descrição: Calcula a parte inteira de um número, descartando os dígitos fracionários. Exemplo: Truncate(1.9) retorna 1.
Max, Min
Descrição: Max retorna o maior de dois números, enquanto Min retorna o menor.
Exemplo: Max(1, 2) retorna 2; Min(1, 2) retorna 1.
⚖️Funções Lógicas e de Comparação
In
Descrição: Verifica se um elemento está contido em um conjunto de valores.
Exemplo: In(3, 1, 2, 3) retorna True.
Conclusão
A biblioteca NCalc oferece um conjunto robusto de ferramentas matemáticas e de utilidade, permitindo aos desenvolvedores e analistas realizar cálculos complexos e avaliações condicionais de forma simples e eficaz. Com a prática e experimentação, as funções apresentadas podem ser combinadas e aplicadas de maneiras inovadoras para resolver desafios específicos em uma variedade de aplicações.
Espero que este tutorial tenha sido útil. Se você tiver alguma dúvida, sinta-se à vontade para perguntar no Intercom.