Simple excel math errado

2
Em primeiro lugar, eu não quero arredondar meus números, estou usando números de base 10, então o Excel não deve se incomodar em adicionar e subtrair simples.

A|  665.110000000000000000000000000000
B|  4.990000000000000000000000000000
C|  =a1+b1
D|  670.790000000000000000000000000000
E|  1,335.890000000000000000000000000000
F|  =e1-(c1+d1)

Eu deveria pegar -5, no entanto F1 retorna

-4.999999999999770000000000000000

É um documento financeiro, portanto, eu quero evitar o arredondamento, mais ao ponto. Por que eu deveria precisar? Eu coloquei formatação de célula para moeda com 2 casas decimais e vou obter o valor de exibição correto, mas para todos os cálculos ainda vou ter -4.9999 ... 7 o que leva a mais erros com formatação condicional, etc.

    
por Lance Roberts 03.11.2010 / 00:33

3 respostas

6

O problema é devido ao hardware básico de quase todos os computadores. Eles são baseados em sistemas binários, então eles não contam de 0 a 9, ao invés disso eles contam apenas 0 e 1, ou base 2.

Tudo bem, a menos que você tenha descoberto que deseja números decimais de alta precisão. Computadores só podem contar em termos de frações que são potências de meio, ou seja, 1/2, 1/4, 1/8, 1/16, 1/32 etc. Não existe uma maneira fácil para um computador representar alguns números, como como 1/3 ou 4.99 com precisão perfeita, sem abrir mão de muito desempenho.

O Excel é muito bom em esconder esse fato, só se você ativar 20 ou mais casas decimais vê esse erro. Isso é feito arredondando, mas apenas arredondando quando o resultado é exibido.

Você diz que isso é para cálculos financeiros, você realmente precisa do resultado final exibido em 20 casas decimais? Ou você só precisa ter certeza de que o cálculo é feito com precisão suficiente para que os erros de arredondamento não ocorram. Se é o último, você pode apenas confiar que o excel tem feito seu trabalho por alguns anos para inúmeras organizações financeiras, sem problemas. E que você não precisa se preocupar com esses erros de arredondamento causando problemas.

    
por 03.11.2010 / 00:47
3

Isso foi respondido aqui antes.

Só porque você está usando um número "Round" na base 10, não ajuda - o computador armazena números em binário. Seu número de base 10 se traduz em um número em binário que acaba repetindo, você perde a informação quando converte essa volta decimal.

Usuários de computadores contornam isso com dois métodos:

1) faça a sua matemática para um determinado número de casas decimais, então arredonde para menos casas decimais. 2) use BCD ou alguma outra representação decimal exata.

Pelo que sei, o Excel não usa o # 2, então escolha outra opção.

    
por 03.11.2010 / 00:41
1

existe uma opção no excel "precision as displayed", que efectivamente arredonda automaticamente os números para a precisão escolhida para mostrar os seus números em.

link

não recomendaria que você fizesse isso, pois isso pode introduzir erros de arredondamento em seu cálculo, como você está dizendo para arredondar para duas casas decimais, enquanto que atualmente o erro de arredondamento é 15 (ish) casas decimais, portanto não afetará seus cálculos em tudo.

    
por 05.11.2010 / 08:32