Problemas resolvidos na íntegra
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
-
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.
-
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.
-
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.
-
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.
-
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⁻¹⁴.
-
É 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.
-
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.
-
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)
- Why half-to-even is the default rather than the rule taught in school, and what else the standard fixes: IEEE, "IEEE Standard for Floating-Point Arithmetic." IEEE Std 754-2019, 2019.
- The long-form explanation of why 1.005 is not stored as 1.005, and what follows from it: D. Goldberg, "What Every Computer Scientist Should Know About Floating-Point Arithmetic." ACM Computing Surveys 23(1), 5–48, 1991.