Controle de arredondamento e precisão decimal em expressões numéricas

Nos cálculos que envolvem multiplicação ou divisão, o Analytics arredonda o resultado para o maior número de casas decimais dos dois operandos. Esse método de arredondamento é associado à aritmética de ponto fixo que o Analytics usa para avaliar a maioria das expressões numéricas.

Para expressões com vários operandos (como a*b/c), o arredondamento é aplicado em cada etapa da expressão, começando pela primeira etapa avaliada e repetindo até que a expressão seja totalmente avaliada.

Nota

Não estar ciente da forma como o arredondamento funciona no Analytics é uma das causas mais comuns de erros de cálculo.

Aritmética de ponto fixo

O comportamento do arredondamento no Analytics é associado à aritmética de ponto fixo que o Analytics usa para suas operações numéricas (com exceção das funções financeiras). O Analytics usa aritmética de ponto fixo por dois motivos:

  • Aumenta a velocidade de processamento
  • Permite ao usuário controlar as casas decimais e o arredondamento

Arredondamento na multiplicação

Considere a expressão 1,1 * 1,1. A resposta correta é 1,21. No entanto, o Analytics arredonda o resultado para uma casa decimal, que é o maior número de casas decimais nos operandos.

1,1 * 1,1 = 1,2

Se um dos operandos tiver duas casas decimais, o Analytics arredondará a parte decimal do resultado para o maior número de casas decimais nos operandos. Neste exemplo específico, nenhum arredondamento é necessário:

1,10 * 1,1 = 1,21

Arredondamento em divisões

Considere a expressão 7/3. A resposta correta é 2.333... . No entanto, o Analytics arredonda o resultado para zero casas decimais porque nenhum operando tem valores decimais.

7/3 = 2

Se um ou ambos os operandos tiverem duas casas decimais, o Analytics arredondará a parte decimal do resultado para o maior número de casas decimais nos operandos:

7/3.00 = 2.33
7.000/3.00 = 2.333

Adicionar casas decimais para controlar o arredondamento

A maneira mais fácil de controlar o arredondamento e alcançar uma precisão decimal desejada é multiplicar uma expressão por 1, seguido do número de casas decimais de precisão que você deseja incluir no resultado. Por exemplo, multiplique por 1,0000 para garantir que um resultado tenha precisão de quatro casas decimais.

Exemplo

Problema

Na expressão a seguir, o Analytics arredonda a resposta para duas casas decimais, que não é precisão suficiente para os seus requisitos:

7,21 * 2,33 = 16,80
7.21 / 2.33 = 3.09

Solução

Para aumentar a precisão do resultado, multiplique por 1, seguido pelo número de casas decimais de precisão desejadas:

1,0000 * 7,21 * 2,33 = 16,7993
1.000000 * 7.21 / 2.33 = 3.094421

Cuidado

Posicione o 1 no início de uma expressão. Se você posicionar o 1 em qualquer outro lugar, o ajuste de precisão poderá não funcionar porque a precisão dos primeiros dois operandos a serem avaliados já causou arredondamento:

7,21 * 2,33 * 1,0000 = 16,8000
7.21 / 2.33 * 1.000000 = 3.090000

Tome cuidado ao utilizar parênteses

Tome cuidado ao utilizar parênteses para especificar a ordem das operações matemáticas. Se você usar parênteses, o ajuste de precisão pode não funcionar porque a precisão dos operandos entre parênteses já causou arredondamento:

1.0000 * (7.21 * 2.33) = 16.8000

A incorporação do 1 dentro dos parênteses pode resolver o problema:

(1.0000 * 7.21 * 2.33) = 16.7993

Comportamento de arredondamento em expressões com vários operandos

O comportamento de arredondamento e a precisão decimal trabalham da mesma forma, independentemente do número de operandos em uma expressão. O Analytics arredonda o resultado para o maior número de casas decimais nos dois operandos à medida que avalia as expressões aos pares.

No entanto, a forma como o arredondamento cumulativo funciona em uma expressão com várias expressões faz com que a precisão decimal estabelecida nos primeiros dois operandos seja avaliada como a precisão a ser aplicada para o resultado da expressão.

Outra característica do arredondamento cumulativo é que a perda de precisão decimal aumenta a cada etapa de uma expressão com vários operandos.

Exemplo de precisão com duas casas decimais

A tabela abaixo mostra como o Analytics aplica o arredondamento durante o cálculo da seguinte expressão com vários operandos:

1.1 * 1.12 * 1.123 * 1.1234 = 1.5514

O maior número de casas decimais na primeira etapa avaliada da expressão é dois (1,1 * 1,12). Essa precisão de duas casas decimais persiste durante o resto da expressão com vários operandos (indicado pelos dígitos em vermelho).

A coluna Diferença do resultado mostra como a perda de precisão cumulativa aumenta a cada etapa sucessiva da avaliação.

Cálculos do Analytics

(em ordem de avaliação)

Resultado do Analytics

(arredondado)

Cálculos sem arredondamento

(em ordem de avaliação)

Resultado sem arredondamento

Diferença do resultado

1.1 * 1.12 1.23 1.1 * 1.12 1.232 0.002
1.23 * 1.123 1.381 1.232 * 1.123 1.383536 0.002536
1.381 * 1.1234 1.5514 1.383536 * 1.1234 1.5542643424 0.0028643424

A precisão em mais detalhes

Na coluna Resultado do ACL (arredondado), todas as casas decimais após as primeiras duas são imprecisas quando comparadas ao Resultado sem arredondamento correspondente. Provavelmente, o grau de imprecisão é a principal preocupação na execução de cálculos numéricos como parte da análise de dados.

Os resultados arredondados não são imprecisos no contexto dos cálculos específicos do par que geraram esses resultados. Por exemplo, 1,23 * 1,123 = 1,38129 que, arredondado com três casas decimais, de acordo com a regra, é 1,381. No entanto, 1,23 era um arredondamento de 1,232, o que significa que o cálculo específico do par já contém um grau de imprecisão.

Exemplo de precisão com cinco casas decimais

A tabela abaixo mostra como o Analytics aplica o arredondamento após a adição de 1,00000 para especificar cinco casas decimais de precisão:

1.00000 * 1.1 * 1.12 * 1.123 * 1.1234 = 1.55427

O maior número de casas decimais na primeira etapa de avaliação da expressão é cinco (1,00000 * 1,1). Essa precisão de cinco casas decimais persiste durante o resto da expressão com vários operandos (indicado pelos dígitos em vermelho).

Cálculos do Analytics

(em ordem de avaliação)

Resultado do Analytics

(arredondado)

Cálculos sem arredondamento

(em ordem de avaliação)

Resultado sem arredondamento

Diferença do resultado

1.00000 * 1.1 1.10000 1.00000 * 1.1 1.10000 0.00000
1.10000 * 1.12 1.23200 1.10000 * 1.12 1.23200 0.00000
1.23200 * 1.123 1.38354 1.23200 * 1.123 1.383536 0.000004
1.38354 * 1.1234 1.55427 1.383536 * 1.1234 1.5542643424 0.0000056576

Especificar a ordem das operações

A colocação de parênteses tem um papel importante na determinação do nível de precisão obtido em um cálculo. Tome cuidado ao utilizar parênteses para alterar a ordem normal das operações matemáticas.

Cálculo dos juros de um dia

O cenário

Você precisa calcular os juros de um dia sobre U$ 100.000 a 12% ao ano.

Uma abordagem

Você pode calcular antes a taxa de juro por dia e depois multiplicá-la por 100.000. No entanto, essa abordagem gera problemas de arredondamento.

100000 * (0.12/365) = 0.00

Primeiro, o Analytics divide 0,12 por 365. Pelas regras de arredondamento do Analytics, o resultado será 0,00. O resultado real é 0,00032876712..., mas como o resultado é arredondado para duas casas decimais, todos os dígitos subsequentes são descartados.

O resultado arredondado é multiplicado por 100.000, resultando em 0,00, embora a resposta correta seja 32,876712...

Uma abordagem alternativa

Você pode calcular antes o valor total dos juros em um ano e dividir o valor por 365. Essa abordagem alternativa evita os problemas de arredondamento.

100000 * 0,12/365 = 32.88

Com os parênteses removidos, os resultados de cada etapa do cálculo são maiores do que 1, o que evita problemas de arredondamento. A resposta é correta até os centavos (duas casas decimais).

Altere a forma como a precisão decimal funciona

Você pode usar o comando SET MATH para alterar a forma como a precisão decimal funciona em expressões numéricas. Por padrão, o Analytics usa o maior número de casas decimais ao avaliar dois operandos. O uso do número máximo preserva o maior nível de precisão em cada etapa da expressão.

O uso de SET MATH na linha de comando ou em um script do Analytics altera o comportamento padrão pela duração da sessão do Analytics. No resumo das opções abaixo, são mostrados os resultados diferentes da expressão 1,275 * 1,3. O resultado não arredondado real é 1,6575.

Comando

Descrição

Resultado de 1,275 * 1,3

SET MATH FIRST use o número de casas decimais do primeiro operando em um par de operandos 1.658
SET MATH LAST use o número de casas decimais do último operando em um par de operandos 1.7
SET MATH MIN use o número mínimo de casas decimais em um par de operandos 1.7
SET MATH MAX

Padrão

use o número máximo de casas decimais em um par de operandos 1.658
Para obter informações detalhadas sobre SET MATH, consulte Comando SET.