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 é o 1, inferior a 5, mantem-se o segundo algarismo, o número 2 e elimina-se o terceiro, tendo como resultado 7,42.

  • Exemplo: para arredondar 3 casas decimais em 2 no número 7,425, como o terceiro algarismo é o 5, superior ou igual a 5, soma-se 1 ao segundo algarismo, tendo como resultado 7,43.

ABNT NBR 5891/2014

A norma estabele os seguintes pontos para esta regra:

  1. 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 é o 1, inferior a 5, mantem-se o segundo algarismo, o número 2 e elimina-se o terceiro, tendo como resultado 7,42.
  2. 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úmero 6, como é maior ou igual a 5, soma-se 1 ao segundo algarismo que é o número 2, tendo como resultado 23,53.
    • Exemplo: arredondar para duas casas decimais o número 5,8451, como o terceiro algarismo é o 5, seguido de um número diferente de zero 0, arredonda-se a segunda casa somando mais 1, resultando em: 5,85.
  3. 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.
  4. 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.

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.