Problemas com cálculo
Tenho uma variável Saldo como Real e em uma determinada parte do código utilizo o seguinte:
Ai por exemplo o valor de Saldo é 65,32
E o valor do campo dm.qpromissoriasSaldo.Value tmabm é 65,32
E este Acrescimo.Value é 0,00
Quando executo esta operação ´como se a subtração de (65,32-(65,32+0,00) não desse 0(zero);
Pedi para mostrar um ShowMessage ]
depois do trecho do código e apareceu o seguinte no mesage:
3,0517577442879E-7
Olha só que doidera, alguem já viu isto?
saldo:=pagar.Value; saldo:=saldo-(dm.qpromissoriasSaldo.Value+acrescimo.Value);
Ai por exemplo o valor de Saldo é 65,32
E o valor do campo dm.qpromissoriasSaldo.Value tmabm é 65,32
E este Acrescimo.Value é 0,00
Quando executo esta operação ´como se a subtração de (65,32-(65,32+0,00) não desse 0(zero);
Pedi para mostrar um ShowMessage ]
ShowMessage(FloattoStr(saldo));
depois do trecho do código e apareceu o seguinte no mesage:
3,0517577442879E-7
Olha só que doidera, alguem já viu isto?
Daniel_mc
Curtidas 0
Respostas
Daniel_mc
26/10/2005
Ai pessoa troquei a declaração da variável saldo de Real para Currency e funcionou. Alguém poderia me explicar o que houve?
GOSTEI 0
Massuda
26/10/2005
...troquei a declaração da variável saldo de Real para Currency e funcionou. Alguém poderia me explicar o que houve?
Real (assim como Single/Double/Extended) são valores em ponto flutuante o que significa que estão sujeitos a erros de arredondamento (nem todo valor tem representação exata na máquina, como é o caso de 1/3).Currecy é um tipo equivalente a um Integer, o que significa que todo valor que ele armazena tem representação exata na máquina.
Existem técnicas de cálculo para evitar problemas de arredondamento com valores em ponto flutuante, mas via de regra, para cálculos que envolvem quantias monetárias, use Currency.
GOSTEI 0