Usuário com melhor resposta
VBA esta calculando valores decimais de forma errada

Pergunta
-
Ola Pessoal,
Estou tentando fazer um calculo básico de multiplicação entre 2 elementos. Porém no EXCEL o cálculo é um e no VBA é outro. Ja conferi e reconferi e esta tudo certinho, sem erros, mas esta dando uma diferença significativa. Estou tentando calcular uma dizima com outro valor decimal, seria assim:
0,103999999999999 X 0,19
Veja na planilha:
Se tentarem fazer esse calculo ate na calculadora o resultado será: 0,0197......
Porém no VBA o valor que esta sendo calculado é: 1,975999......
Vejam a imagem do VBA:
- Editado Guiu quinta-feira, 5 de fevereiro de 2015 00:13
Respostas
-
Oi Guiu
O resultado apresentado pelo VBA é o mesmo, apenas mostrado no formato Científico
Repare que no final do número tem E-02 o que significa 10 elevado a -2 que é o mesmo que 1/100
Ou seja, o número que o VBA está apresentando é 1,9759999999998 * 1/100 que é o mesmo que
0,01975999...
Ou arrendondando para 6 casas decimais
0,019760
Exatamente o mesmo número que você achou na planilha
Para que no seu formulário apareça 0,019760 você pode usar o seguinte
Me.TextBox1 = Format(0.103999999999999 * 0.19, "0.000000")
Estou supondo que o textbox tem o nome de TextBox1 (corrija para o seu caso real)
Espero que ajude
M.
- Editado mcbranco quinta-feira, 5 de fevereiro de 2015 02:15
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quarta-feira, 11 de março de 2015 00:33
Todas as Respostas
-
Boa noite Guiu.
Acho que vc interpretou errado o número de saída. Note que ele está em Notação Científica: 1,9759999...e-2, que corresponde a 1,97599... x 10^-2 = 1,97599... / 100 = 0,0197599...
Logo os resultados são iguais (a planilha arredondou para 0,019760 devido ao número de casas decimais selecionado), compreendeu?
Abraço.
Filipe Magno
-
Oi Guiu
O resultado apresentado pelo VBA é o mesmo, apenas mostrado no formato Científico
Repare que no final do número tem E-02 o que significa 10 elevado a -2 que é o mesmo que 1/100
Ou seja, o número que o VBA está apresentando é 1,9759999999998 * 1/100 que é o mesmo que
0,01975999...
Ou arrendondando para 6 casas decimais
0,019760
Exatamente o mesmo número que você achou na planilha
Para que no seu formulário apareça 0,019760 você pode usar o seguinte
Me.TextBox1 = Format(0.103999999999999 * 0.19, "0.000000")
Estou supondo que o textbox tem o nome de TextBox1 (corrija para o seu caso real)
Espero que ajude
M.
- Editado mcbranco quinta-feira, 5 de fevereiro de 2015 02:15
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quarta-feira, 11 de março de 2015 00:33