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. |