Precisão de cálculos com pontos flutuantes no Excel - Tecnologias

Tecnologias

Assuntos diversos ligados à tecnologia.

Syndication

Receive Email Updates



Precisão de cálculos com pontos flutuantes no Excel

Já vi muita gente que precisa realmente trabalhar com grande precisão numérica, reclamando que o seu Excel "errou" um cálculo.

Como isso ocorre?

Vamos começar por um exemplo numérico para ficar mais fácil de constatarmos o problema. Digamos que preciso somar os três números abaixo e preciso de precisão total nos cálculos:

Valor 1 = 45.031,400000002400

Valor 2 = 35.685,600000000000

Valor 3 = 1.523.133,000000000000

Soma no Excel = 1.603.850,000000000000

Resultado mais preciso = 1.603.850,000000002400

O que houve? Por que a precisão do Excel fez com que aqueles 24 simplesmente desapareçam?

Bem, vamos entender então como funciona a precisão dos cálculos no Excel.

Quando estamos trabalhando com números, estes nada mais são do que variáveis, ou seja, em termos de programação eles são interpretados como variáveis numéricas. Ok, mas dentro os tipos de variáveis que podemos usar, qual o utilizado pelo Excel? Aí é que está a questão, vários tipos de variáveis poderiam ser utilizados, mas estão como é determinado o tipo escolhido? Para padronizar a forma como as planilhas de cálculo funcionam, foi estabelecido um padrão internacional a ser seguido por todos desenvolvedores de planilhas. Este padrão foi definido pelo IEEE (Institute Of Electrical And Electronic Engineers) e definiu como devem ser tratados, em cálculos, os números de pontos flutuantes (aqueles que possuem vírgulas).

Ficou definido que o padrão de variável a ser utilizado é Double. Ok, mas o que isso significa. Double significa uma variável de 8-bytes, ou em outras palavras, com até 15 dígitos. Naturalmente que isto não guarda relação alguma com a forma de exibição de números configurada em sua planilha. Mesmo que você tenha definido para apresentar apenas duas casas decimais após a vírgula, os cálculos serão procedidos com 15 dígitos.

Qual a diferença entre 15 dígitos e 15 casas após a vírgula? Imensa, pois quando se fala de 15 dígitos, estamos falando de 15 dígitos, estejam eles do lado que estiverem da vírgula!

Voltemos ao nosso exemplo e vejamos até onde os números são considerados em nossos cálculos:

Valor 1 = 45.031,400000002400 -> 5 dígitos antes da vírgula e 12 após, totalizando 17, portanto sendo 2 desprezados. Como os dois últimos são "0" (zeros), nada se perde;

Valor 2 = 35.685,600000000000 -> Mesmo tamanho do anterior, com dois últimos sendo "0" (zeros) também. Novamente nada se perde;

Valor 3 = 1.523.133,000000000000 -> 7 dígitos antes da vírgula e 12 após, totalizando 19, sendo portanto 4 desprezados. Novamente os desprezados são os "0" (zeros).

Soma = 1.603.850,000000002400 -> 7 dígitos antes da vírgula e 12 após, totalizando 19, sendo portanto 4 desprezados. Desta vez os 4 últimos são "2400", onde ocorre o despreza dos 24 que haviam "desaparecido" da resposta do Excel.

Mas considerando que eu precise de precisão total, há como configurar minha planilha para considerar todos os dígitos? Não.

Via VBA eu conseguiria realizar este cálculo com total precisão? Sim, mas não seria nada simples, pois ainda há outro problema. Além da planilha seguir este padrão, o próprio computador também o segue, portanto isto também precisaria ser contornado em seu código.

Então não há como trabalhar com uma precisão superior a 15 dígitos? Há sim, basta instalar um complemento para isto, disponível em http://digilander.libero.it/foxes/index.htm. Ele amplia a precisão de 15 dígitos para 250 dígitos. Realmente se você ainda precisa de mais do que isso, melhor recorrer a um software estatístico!

Published quinta-feira, 23 de setembro de 2010 11:45 by Paleo

Filed under:

Comments

No Comments

Leave a Comment

(required) 
(required) 
(optional)
(required)