Arredondamento: as regras e o seu custo

O arredondamento parece ser a única área da aritmética onde não há o que discutir. Escolha um valor e veja seis regras discordarem sobre ele; depois, arredonde o mesmo número em duas etapas em vez de uma, e observe a resposta mudar.

A carregar a simulação interativa...

A metade para o par não é uma regra mais exata, é uma regra imparcial 🖖

Num empate, o valor fica exatamente entre dois vizinhos e nenhuma regra consegue estar certa. A única questão é de que forma vamos errar. A regra escolar vai sempre para cima, o que é fácil de ensinar e de verificar, mas o preço a pagar é estar errada na mesma direção sempre. Carregue uma coluna de empates e selecione a metade para cima: o total acaba meia unidade por valor acima da verdade. São 1.000 acima em 2.000 valores e 3.200 acima em 6.400. Não existe qualquer dispersão, porque uma regra que nunca muda não tem nada de aleatório. A regra da metade para o par envia o empate para o vizinho que for par, de modo que o 2,5 desce para 2 enquanto o 3,5 sobe para 4. Numa coluna que não seja tendenciosa, isso alterna-se e os erros anulam-se em vez de se acumularem. A norma IEEE 754 adotou isso como padrão na aritmética de ponto flutuante e a maioria das normas contabilísticas exige o seu uso. Nenhuma dessas escolhas ocorreu por ser um modelo mais exato. Num número isolado, essa regra às vezes é pior. No entanto, ela é imparcial ao longo de muitos números. Essa sim é uma propriedade diferente, sendo a única que importa quando os números são abundantes.

Arredondar duas vezes é uma operação diferente de arredondar apenas uma 🖖

Tome o 2,45 para um número inteiro: o que vem após a vírgula é menor do que meio, portanto a resposta é 2. Agora faça isso em duas etapas. Para uma casa decimal, o 2,45 é um empate e torna-se 2,5. Em seguida, o 2,5 para um inteiro é 3. Os dois movimentos seguiram a regra, mas as respostas são 2 e 3. O que ocorreu foi que o primeiro arredondamento fabricou um empate que não existia. O valor original repousava em segurança abaixo da marca central e, após um passo, acabou exatamente sobre ela, deixando a segunda etapa à mercê da adivinhação. Analise cada valor de duas casas decimais até 1.000 e a parada intermediária muda a resposta em 5,00% dos casos. É o que ocorre com todo valor cujos centésimos vão de 45 a 49, o que representa 5 a cada 100. É por isso que uma conversão de moeda, um cálculo de imposto ou uma cadeia de conversões de unidades especificam onde ocorre o arredondamento. Ninguém duvida da aritmética. A questão é que "arredondar no fim" e "arredondar a cada etapa" são duas contas diferentes vestindo a mesma roupa.

Um erro tendencioso cresce com a quantidade; o erro imparcial cresce com a sua raiz quadrada 🖖

Mude a coluna para empates e arraste o seu comprimento. A metade para cima desenha uma linha reta: cada valor contribui com meia unidade na mesma direção. O desvio será eternamente a metade da quantidade de números, sem qualquer dispersão. A metade para o par traça um caminho que vagueia: sobe um pouco, desce de novo, cruza o zero e sai pelo outro lado. Medido ao longo de 2.000 colunas diferentes, o tamanho típico desse passeio é metade da raiz quadrada da quantidade de números. Estamos falando de cerca de 5 numa centena de valores, 20 em mil e seiscentos e 40 em seis mil e quatrocentos. Essa é a assinatura de um passeio aleatório e, na prática, é toda a diferença. Com seis mil e quatrocentos valores, a regra tendenciosa erra por 3.200 e a regra justa por cerca de 40. A proporção entre elas continua a alargar a cada linha adicionada, pois uma cresce no ritmo da contagem e a outra no ritmo da sua raiz quadrada. Mude para quantidades comuns e a mesma coisa ocorre em silêncio. Os empates ali são raros, 11 em cada 1.000, de modo que a maior parte do desvio vem do arredondamento comum e ambas as regras da metade ficam a cerca de 8 do valor verdadeiro de 98.351,63. Depois, tente o arredondamento para baixo na mesma coluna e faltarão 486. Arredondar para baixo retira um pouco de quase todos os valores, não apenas dos empates.

Problemas resolvidos na íntegra

  1. Arredondar 1 000 montantes para a unidade inteira mais próxima com um total real de 98 351,63 7 passos

    Uma loja arredonda cada uma das 1.000 quantias para a unidade inteira mais próxima e soma todas elas. O total real é 98.351,63. Calcule o valor do total arredondado segundo cada regra e decida qual delas a loja deverá utilizar.

    1. Resolva a regra antes de analisar a coluna. Pegue o 2,5. A metade para cima leva a 3. A metade para o par leva a 2, porque o 2 é o vizinho par.

    2. Verifique como a metade para o par alterna em vez de ir sempre para baixo: o 3,5 vai para 4 em ambas as regras, porque desta vez o vizinho par é o que está acima.

    3. Agora a coluna. Das 1.000 quantias, apenas 11 ficam exatamente num empate. As duas regras da metade concordam em 989 delas e podem diferir no máximo em 11 — uma unidade por empate.

    4. Some os valores arredondados. A metade para cima dá 98.360, o que fica 8,37 acima do correto. A metade para o par dá 98.354, ou 2,37 acima. A diferença de 6 entre eles saiu daqueles 11 empates.

    5. A maior parte desse desvio não vem dos empates, mas do arredondamento comum, o qual em 1.000 quantias comuns tem a mesma probabilidade de ir para qualquer um dos lados. Para ver as regras em si em vez do ruído, mude a coluna para os empates, onde todos os valores são um deles. A metade para cima fica então 500 acima e a metade para o par desvia apenas 6.

    6. Experimente o arredondamento para baixo na coluna original para contrastar: o resultado é 97.866, faltando 486. Arredondar para baixo retira algo de quase todos os valores, em vez de atuar apenas nos empates. É por isso que o seu desvio não precisa de empates para se acumular.

    7. Decidir qual regra usar depende, portanto, do que está a ser protegido. Para um recibo único, qualquer regra da metade serve e a diferença nunca ultrapassa meia unidade. Ao longo de um livro contabilístico inteiro, apenas uma regra sem direção preferencial deixa o total no ponto de partida.

    Resposta

    98.360 na metade para cima, 98.354 na metade para o par e 97.866 no arredondamento para baixo, contra um valor real de 98.351,63. A loja deve usar a metade para o par. Não porque seja mais exata numa quantia isolada, onde pode até ser pior, mas porque os seus erros não têm direção e, portanto, não se acumulam. A regra da metade para cima erra por meia unidade em cada empate que encontra, sempre para cima e sem qualquer exceção.

  2. 1,005 com duas casas, e o empate que não é um empate 7 passos

    Arredonde 1,005 a duas casas decimais. Determine o que a máquina guarda realmente quando escreve esse valor e decida depois se uma folha de cálculo que responde 1,00 se enganou.

    1. Enquanto decimal é um empate: 1,005 está à mesma distância de 1,00 e de 1,01, pelo que a metade para cima o envia para cima e o painel apresenta 1,01.

    2. A máquina não guarda um decimal. Um double é uma soma de potências de dois, e 0,005 é um duocentésimo, cujo denominador traz um 5² que nenhuma potência de dois consegue fornecer. A expansão binária nunca termina.

    3. O que fica guardado é o double mais próximo, e ele fica abaixo de 1,005 por cerca de 1,07 × 10⁻¹⁶. Numa comparação exata isso não é empate nenhum, e a metade para cima enviá-lo-ia para baixo, para 1,00.

    4. A diferença torna-se visível assim que o valor é escalado para ser comparado. 1,005 × 100 dá 100,49999999999999, cuja parte fracionária fica aquém de meio por 1,42 × 10⁻¹⁴.

    5. É por isso que o arredondamento aqui encaixa no empate. Tudo o que esteja a menos de 8 passos de máquina de meio é tratado como meio e, nesta ordem de grandeza, essa janela é de 1,79 × 10⁻¹³, mais de dez vezes mais larga do que a diferença. O painel responde à pergunta que fez sobre o decimal e não àquela que o binário colocava.

    6. A tolerância não é gratuita, e a coluna mostra quanto custa. Mil valores terminados em ,005, empurrados cada um meio centésimo para cima, deixam o total 5,00 acima do correto. A metade para o par reparte os mesmos empates e fica-se por 0,07.

    7. Duas das outras predefinições são de outra natureza. 2,5 e 12,5 têm forma binária exata, pelo que são empates dentro da máquina tal como no papel e não há tolerância envolvida. «Exatamente metade» é uma propriedade do decimal que escreveu, e só sobrevive dentro da máquina para as metades que o são de facto.

    Resposta

    1,01, e uma folha de cálculo que responde 1,00 tem razão quanto ao número que guarda e engana-se quanto ao número que escreveu. O valor guardado está 1,07 × 10⁻¹⁶ abaixo de 1,005, pelo que uma comparação exata nunca vê um empate, e é o encaixe que repõe a resposta onde um leitor a espera. Nenhuma regra de arredondamento repara o problema de fundo. O dinheiro pertence a cêntimos inteiros, ou a um tipo decimal, onde 1,005 é 1,005 e a pergunta nem chega a surgir.

Percurso de aprendizagem

Escrever um número

Referências (2)

Problemas de exemplo

  • Um empate - O valor 2,5 fica exatamente entre o 2 e o 3, e as regras dividem-se: a metade para cima resulta em 3, enquanto a metade para o par resulta em 2. Altere o valor para 3,5 e elas concordam no 4, porque 4 é o vizinho par nesse caso. A regra da metade para o par não favorece o arredondamento para baixo, ela simplesmente alterna.
  • Arredondado duas vezes - O valor 2,45 arredondado para um número inteiro é 2. Arredondando primeiro para uma casa decimal, ele torna-se 2,5. Em seguida, o 2,5 para um número inteiro é 3. Nenhuma das duas etapas violou a regra e as respostas são diferentes.
  • O que parece um erro - O 1,005 com duas casas decimais deveria ser 1,01. Pergunte ao JavaScript ou ao Python e ambos dirão 1,00, porque o 1,005 não é armazenado como 1,005. Ele é guardado um fio de cabelo abaixo desse valor, e 1,005 vezes 100 resulta em 100,49999999999999. Esta ferramenta responde 1,01. O único motivo pelo qual ela consegue fazer isso é porque procura um empate usando uma margem de tolerância em vez de testar uma igualdade exata.
  • Uma coluna longa - Temos 6.400 valores, cada um deles exatamente num empate. A regra da metade para cima envia cada um para o mesmo lado, e o total termina 3.200 acima do correto. É meia unidade por valor, sem exceções. A regra da metade para o par, nesta mesma coluna, termina com um erro de apenas 1.