GARANTIR DESCONTO

Fórum Erro em Valores Float #352796

31/01/2008

0

Olá,

Tenho um campo (valor) do tipo numeric(18,4). Gravo um registro com o valor 10,04 nele.
Depois de gravado, se eu fizer uma showmessage(formatFloat(´0.00000000000000000´,ClientDataSetContasReceber.FieldByName(´VALOR´).asFloat, vai mostrar o seguinte resultado: 10,03999999999992000. O correto seria 10,0400000000000000 logicamente.

Esssa inconsistência acaba gerando erros em cálculos.

Alguém sabe a causa disso e como resolver?

Uso FB 2.0 e D7
Obrigado


Armindo

Armindo

Responder

Posts

31/01/2008

Aroldo Zanela

Colega,


Existem longas discussões aqui e na Web (google) em face as questões relacionadas a mantissa de número de ponto flutuando. Para encurtar o assunto, use tipos currency para evitar problemas.


Responder

Gostei + 0

31/01/2008

Armindo

[quote:b2910bef4c=´Aroldo Zanela´]Colega,


Existem longas discussões aqui e na Web (google) em face as questões relacionadas a mantissa de número de ponto flutuando. Para encurtar o assunto, use tipos currency para evitar problemas.[/quote:b2910bef4c]

Obrigado pela resposta, mas como ficaria essa instrução SQL: CAST((VALOR1 + VALOR2) AS [b:b2910bef4c]FLOAT[/b:b2910bef4c])AS VALORTOTAL?

Obrigado


Responder

Gostei + 0

31/01/2008

Aroldo Zanela

Colega,

Na consulta SQL não há necessidade de efetuar casting, considerando que os tipos já são numéricos (18,4).


Responder

Gostei + 0

31/01/2008

Armindo

[quote:3d16ab82ce=´Aroldo Zanela´]Colega,

Na consulta SQL não há necessidade de efetuar casting, considerando que os tipos já são numéricos (18,4).[/quote:3d16ab82ce]

Na verdade eu preciso sim. É que essas consultas são para relatórios e como utilizo o Fortes Report e este, no seu componente RLDBResult, não soma valores numéricos, eu transformava em float para a soma dar certo.
Mas resolvi de outra maneira: vou seguir seu conselho e utilizar o tipo currency na aplicação de forma em geral, em substituição ao tipo float/extended. Nos relatórios crio um campo calculado para os totais.

Obrigado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar