Plugin Cálculos Precisos
O Plugin Cálculos Precisos do Cronapp é um recurso que permite realizar operações matemáticas com maior exatidão, evitando problemas comuns de arredondamento ou perda de precisão que ocorrem em cálculos feitos apenas com os blocos da categoria Matemática. A seguir, veja como ele funciona e em quais situações sua utilização é mais adequada.
Funcionamento do plugin
O plugin utiliza internamente a biblioteca Math.js, amplamente reconhecida por oferecer uma extensa variedade de funções matemáticas e suporte a cálculos de alta precisão. Ao empregar formatos como BigNumber, BigDecimal ou similares, o plugin evita o uso de valores em ponto flutuante, que podem gerar erros de arredondamento. Dessa forma, garante uma representação numérica exata, preservando todas as casas decimais necessárias para operações precisas.
Vantagens do plugin
Precisão garantida: o plugin suporta números grandes (BigNumber), permitindo cálculos precisos sem perda de dados, ao contrário dos tipos numéricos nativos do JavaScript.
Operações matemáticas variadas: suporte a diversas funções nativas de matemática, estatística e trigonometria.
Facilidade de uso: o plugin oferece blocos prontos diretamente no editor do Cronapp, dispensando a necessidade de bibliotecas externas ou scripts adicionais para cálculos de alta precisão.
Maior controle de arredondamento: possibilita escolher o modo de arredondamento (para cima ou para baixo), essencial em muitas aplicações financeiras.
Manejo de Strings: permite a manipulação de números grandes como strings, evitando problemas de precisão comuns com números inteiros muito grandes em JavaScript.
É importante destacar que operações com BigNumber podem ser mais lentas comparadas às operações nativas de JavaScript, especialmente para cálculos muito complexos ou em grande quantidade. É uma biblioteca relativamente grande, o que pode impactar o tamanho final do aplicativo e o tempo de carregamento.
Usabilidade do plugin
Abaixo estão algumas situações comuns em que o uso do plugin é altamente recomendado:
Cálculos financeiros e contábeis: em operações com valores monetários — como somas em sistemas de vendas, cálculo de juros ou divisão de parcelas — a precisão é essencial para evitar divergências de centavos. O plugin garante o tratamento correto das casas decimais, assegurando exatidão nos resultados.
Aplicações científicas ou estatísticas: projetos que envolvem análise de dados, cálculos estatísticos ou qualquer cenário que exija alta precisão — como médias de grandes volumes de dados ou funções matemáticas complexas — se beneficiam do uso do plugin, que evita distorções causadas por arredondamentos imprecisos.
Conversão de valores grandes: em contextos que envolvem a manipulação de números muito grandes (como big data, valores astronômicos ou movimentações em criptomoedas), o uso de tipos numéricos tradicionais pode resultar em perda de informação. O plugin mantém a integridade e precisão desses valores.
Processos críticos de cálculo: em sistemas onde pequenas imprecisões podem gerar impactos significativos — como simulações financeiras, cálculos tributários, comissionamentos ou qualquer operação com tolerância zero a erros — o plugin é especialmente indicado para garantir confiabilidade.
Configuração do Servidor
Tratar números precisos no lado do servidor é fundamental para garantir a confiabilidade, segurança e integridade dos dados, especialmente em operações financeiras. Diferente do cliente, onde linguagens como JavaScript utilizam tipos numéricos imprecisos (como Number, baseado em ponto flutuante), o servidor permite o uso de tipos como BigDecimal, que asseguram cálculos exatos e previsíveis.
Centralizar a lógica de validação e cálculo no servidor evita inconsistências entre diferentes clientes (web, mobile, etc.), protege contra manipulações maliciosas e garante a padronização dos resultados. Além disso, permite aplicar validações rigorosas e registrar auditorias com precisão, fortalecendo a arquitetura do sistema e assegurando que os dados armazenados no banco estejam sempre corretos e alinhados com as regras de negócio.
Para garantir maior precisão em cálculos numéricos, especialmente no tratamento de valores monetários, o usuário precisa adotar algumas práticas robustas nas entidades do projeto e no banco de dados que está utilizando:
Substituição de tipos primitivos double e float por BigDecimal, que proporciona maior precisão e controle, sendo mais adequado para operações financeiras sensíveis.
Definição explícita de precisão e escala nas anotações JPA por meio de
@Column(precision = x, scale = y), assegurando que os limites definidos no modelo de dados estejam refletidos corretamente no banco de dados. É possível modificar este campo de forma simples no Cronapp.
Figura 1 - Configurando a precisão e a escala
Uso das operações aritméticas próprias do BigDecimal (add, subtract, multiply, divide), sempre com definição do RoundingMode apropriado para evitar comportamentos indesejados em arredondamentos.
Configuração do Jackson para serialização segura de BigDecimal em JSON, evitando perda de precisão ao expor dados por meio de APIs REST.
Aplicação de validações com anotações como
@Digits,@DecimalMine@DecimalMax, garantindo que os valores inseridos estejam dentro dos limites esperados, tanto na aplicação quanto no banco de dados.Verificação rigorosa do mapeamento dos tipos SQL gerados, assegurando que estejam definidos como
DECIMAL(p, s)ouNUMERIC(p, s), em conformidade com a modelagem do banco e evitando o uso de tipos imprecisos comoFLOATouREAL.Padronização dos tipos numéricos em todos os campos relevantes, promovendo consistência entre a aplicação e o banco de dados, e prevenindo divergências nos limites e no comportamento de cálculo.
As alterações nas classes devem estar alinhadas com a estrutura do banco de dados, garantindo compatibilidade tanto com o tipo de dado utilizado (BigDecimal) quanto com a quantidade de casas decimais definidas.
Adicionar plugin
Siga os passos abaixo para instalar o Plugin Cálculos Precisos em seu projeto Cronapp.
Figura 2 - Instalando o plugin Cálculos Precisos
Acesse Plugin no menu do sistema.
Selecione a opção Instalar Plugins.
Pesquise pelo nome Cálculos Precisos ou Precise Calculations
Selecione Cálculos Precisos/Precise Calculations, clique em Avançar e, em seguida, em Finalizar.
Bloco de Programação
Após instalar o plugin, será possível visualizar nos blocos de programação do tipo Cliente, a categoria Precise Calculations e os vários blocos desta categoria (Figura 2.1).
Figura 2.1 - Blocos da categoria Cálculos Precisos
Exemplo
No exemplo da figura abaixo, estamos realizando duas operações de exponenciação. A primeira operação utiliza o bloco Operações aritméticas em conjunto com o bloco Número, ambos pertencentes a categoria Matemática. A segunda operação utiliza o bloco Calcular Expressão, da categoria Precise Calculations, os valores informados em ambos os blocos são os mesmos. A fim de comparar os valores gerados, vinculamos os blocos à função criar texto com.
Figura 3 - Comparação entre os resultados gerados pelos blocos Operações aritméticas e Calcular Expressão
O resultado será impresso no console do navegador (Figura 3.1). Perceba que o resultado gerado pelo bloco Operações aritméticas foi arredondado para cima, enquanto a função Calcular Expressão gerou o resultado exato.
Figura 3.1 - Resultado gerado a partir da execução da função da Figura 3