|
|
|
|
|
Dicas
|
|
Visual Basic (Datas/Números/Strings)
|
|
|
Título da Dica: Contas corretas com ponto fluante
|
|
|
|
Postada em 8/10/2000 por Webmaster
webmaster@vbweb.com.br
Alguém já notou que o Visual Basic não é muito bom em matemática? Tente fazer 18.51 + (-17.59) e você irá receber .9200000000000002.
Isso ocorre, porque no Visual Basic, os valores com ponto flutuante são armazenados no formato padrão IEEE. A representação da máquina sobre valores numéricos é em binário. Qualquer valor inteiro pode ser representado "EXATAMENTE" na forma binária, mas nos casos de valores com ponto flutuante, isso não acontece.
Por exemplo, o decimal 0.0001 não pode ser representado exatamente em binário (0.0001 é uma fração repetitiva com um período de 104 bits!). Então, os valores com ponto flutuante são aproximados para o próximo valor que pode ser representado em binário. Logo, eles tendem a causar algum erro nos calculos quando são utilizados. No nosso exemplo, ambos 18.51 e 17.59 não podem ser representados exatamente pelo padrão de ponto flutuante. A soma deles incluirá um pequeno erro. Observe que o erro é bastante pequeno e essencialmente a soma (quando vista em uma precisão de 14/15 pontos decimais usando a função Format$) é correta.
Para exibir o resultado exato para o usuário, faça o seguinte:
Format$(18.51 + (-17.59), "###.#####")
|
|
|
|
|