none
VBA esta calculando valores decimais de forma errada RRS feed

  • 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
    quinta-feira, 5 de fevereiro de 2015 00:11

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.


    quinta-feira, 5 de fevereiro de 2015 02:12

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

    quinta-feira, 5 de fevereiro de 2015 01:59
  • 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.


    quinta-feira, 5 de fevereiro de 2015 02:12