Eu participei de um projeto de B2B (Business to Business), onde eu fazia parte da equipe que desenvolvia a plataforma de backoffice, e outra equipe desenvolvia o frontoffice (a loja ondecliente comprava). Cada parte da plataforma - back e front office, necessitavam trocar dados e foi necessário estabelecer uma regra de arredondamento numeral, com definição de casas decimais, para os cálculos de pedidos com percentuais de frete, plataforma e impostos.
Todo sistema que realiza cálculos numéricos em contexto financeiro necessita determinar arredondamentos numérico de casas decimais. Isto se faz necessário por convenção de mercado, ou por lei.
Para tanto é necessário definir regras a serem seguidas, a fim de que os resultados possam ser previstos e auditados.
Outro exemplo da necessidade em se estabelecer regras para o arredondamento, no contexto de sistemas computacionais se dá quando existe comunicação entre sistemas, com troca de dados.
Para atender a todos estes contextos, a regra da Associação Brasileira de Normas Técnicas - ABNT, para arredondamento da numeração decimal, pode ser aplicada com eficácia.
Quando fazer o arredondamento numérico de casas decimais
Nos contextos de cálculos relacionados à Estatística, Matemática Financeira entre outras situações onde os softwares resolvem problemas cotidianos, de negócio ou mesmo no contexto da educação e que estão relacionadas ao uso de números com limites de casas decimais.
Regras para arredondamento na numeração decimal
Para definir padrão no arredondamento de casas decimais, a Associação Brasileira de Normas Técnicas (ABNT), estabelece a NBR 5891:2014 para este fim. Porém, existe uma regra universal padrão utilizada por muitas rotinas de linguagens de programação.
Regra simples para arredondamento de casas decimais
Quando o algarismo a ser conservado for seguido de algarismo inferior a 5
, permanece o algarismo a ser conservado e retiram-se os posteriores. Quando for maior que 5
, soma-se um 1
ao algarismo que deseja arredondar.
Exemplo: para arredondar 3 casas decimais em 2 no número
7,421
, como o terceiro algarismo é o1
, inferior a5
, mantem-se o segundo algarismo, o número2
e elimina-se o terceiro, tendo como resultado7,42
.Exemplo: para arredondar 3 casas decimais em 2 no número
7,425
, como o terceiro algarismo é o5
, superior ou igual a5
, soma-se1
ao segundo algarismo, tendo como resultado7,43
.
ABNT NBR 5891/2014
A norma estabele os seguintes pontos para esta regra:
- Quando o algarismo a ser conservado for seguido de algarismo inferior a
5
, permanece o algarismo a ser conservado e retiram-se os posteriores.- Exemplo: para arredondar 3 casas decimais em 2 no número
7,421
, como o terceiro algarismo é o1
, inferior a5
, mantem-se o segundo algarismo, o número2
e elimina-se o terceiro, tendo como resultado7,42
.
- Exemplo: para arredondar 3 casas decimais em 2 no número
- Quando o algarismo a ser conservado for seguido de algarismo superior a 5, ou igual a 5 seguido de no mínimo um algarismo diferente de zero,soma-se uma unidade ao algarismo a ser conservado e retiram-se os posteriores.
- Exemplo: arredondar para duas casas decimais o número
23,52621
. Testa-se o terceiro algarismo, o número6
, como é maior ou igual a 5, soma-se1
ao segundo algarismo que é o número2
, tendo como resultado23,53
. - Exemplo: arredondar para duas casas decimais o número
5,8451
, como o terceiro algarismo é o5
, seguido de um número diferente de zero0
, arredonda-se a segunda casa somando mais1
, resultando em:5,85
.
- Exemplo: arredondar para duas casas decimais o número
- Quando o algarismo a ser conservado for ímpar, seguido de
5
e posteriormente de zeros, soma-se uma unidade ao algarismo a ser conservado e retiram-se os posteriores.- Exemplo: arredondar para quatro casas decimais o número
4,3241500
, o resulrado é:4,3242
.
- Exemplo: arredondar para quatro casas decimais o número
- Quando o algarismo o a ser conservado for par; seguido de
5
posteriormente de zeros, permanece o algarismo a ser conservado e retiram-se os posteriores.- Exemplo: arredondar para uma casa decimal o número
4,850
, o resultado é:4,8
.
- Exemplo: arredondar para uma casa decimal o número
Scripts e funções para ABNT NBR 5891/2014
Se você precisa seguir as regras de arredondamento numérico da ABNT NBR 891/2014, a comunidade open source implementou em algumas linguagens como segue:
Script PHP para ABNT NBR 5891/2014
Podemos encontrar dois scripts PHP no Github que implementam funções para roung seguindo as regras da ABNT NBR 5891/2014:
VB6 - Script Visual Basic para ABNT NBR 5891/2014
Podemos encontrar um script VB6 no Github que implementa funções para roteamento seguindo as regras da ABNT NBR 5891/2014:
Conclusões
Defina claramente qual a regra seguir em casos de arredondamento em seu software, de acordo com a padronização necessaria à regra de negócio que ele apoia.
Comentários