Passar para o conteúdo principal

Funções de Custos Extras

Entenda tudo sobre as funções disponiveis para criação de fórmulas usando a biblioteca NCalc.

Carina Protti avatar
Escrito por Carina Protti
Atualizado há mais de 2 meses

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.

Respondeu à sua pergunta?