dummies
|
CERQUILHO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 02/05/2013 19:38 hs
Tenho duas variaveis do tipo Double. dSomaItens dTotalDuplicatas
Onde: dSomaItens = 12557,36 dTotalDuplicatas = 12557,36
Faço um IF para comparar o valor dessas duas variáveis, e caso não seja igual, então informo o usuário.. Assim:
If (CDbl(dSomaItens) - CDbl(dTotalDuplicatas)) <> 0 Then MsgBox "O Valor total dos produtos não confere com o valor total das duplicatas" Exit Sub End If
Ocorre que conforme o calculo acima ele sempre atende a condição, ou seja, o valor nunca é igual a zero. Nesse caso quando faço isso no imediate para conferir o que ele calcula, então o sistema retona o seguinte valor:
-1,81898940354586E-12
No imediate faço assim: ?cdbl(dSomaItens) - cdbl(dTotalDuplicatas)
Essa eu realmente não sei o que fazer, pois os valores são iguais... Se alguém puder me dar uma força, eu agradeço.
|
TÓPICO EDITADO
|
|
|
|
|
|
Postada em 02/05/2013 19:44 hs
Eu acabei de encontrar uma solução, mas mesmo assim caso alguém possa me explicar o que houve, eu agradeço. Inclui um formatnumber. Fim assim:
formatnumber(dSomaItens,3) - formatnumber(dTotalDuplicatas,3)
Dessa forma deu certo.
|
|
|
|
Postada em 04/05/2013 14:07 hs
Colega...
Tive um caso parecido em que eu diminuia um valor do outro (não lembro mais os valores) mas lembro que a diferença era de 0,741 e dava 2,xxxx (o xxxxx também não lembro).
Na ocasião precisei converter de double para string, reconverter para currency para fazer dar certo.
Não sei se é bug no VB ou algo dos processadores (no meu caso Intel Celeron, na época).
Caso sério. Até mostrei no immediate para o cliente ver porque estava dando erro, que ei tinha feito a lógica correta, mas o VB e/ou Processador não ajudavam.
Tudo de bom.
|
|
|
|
Postada em 05/05/2013 10:22 hs
Não pensei na possibilidade de ser o processador, pois o mesmo erro ocorreu em máquinas diferentes... Acredito que seja bug do VB, mas como comentei, ao formatar a variável consegui resolver o problema.
|
|
|
|