Problemas com cálculo

Delphi

26/10/2005

Tenho uma variável Saldo como Real e em uma determinada parte do código utilizo o seguinte:
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

Daniel_mc

Curtidas 0

Respostas

Daniel_mc

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

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
POSTAR