Problemas com campo Float
Olá!
Eu tenho um aplicativo para controle de estoque onde utilizo campos do tipo float para guardar a quantidade do produto.
O problema ocorre quando preciso multiplicar este campo por um outro campo também float. O Firebird (1.5) gera como valor para o campo um número muito grande com várias casas decimais e o pior é que errado.
Por exemplo: Tinha um produto zerado no estoque. Dei entrada de 2 caixas, cada uma contendo 2,23 do produto. Logo a quantidade que deveria entrar para a tabela deveria ser 4,46 mas quando vou ver na tabela, o número que aparece é: 4,46000003814697.
Desde já agradeço...
Eu tenho um aplicativo para controle de estoque onde utilizo campos do tipo float para guardar a quantidade do produto.
O problema ocorre quando preciso multiplicar este campo por um outro campo também float. O Firebird (1.5) gera como valor para o campo um número muito grande com várias casas decimais e o pior é que errado.
Por exemplo: Tinha um produto zerado no estoque. Dei entrada de 2 caixas, cada uma contendo 2,23 do produto. Logo a quantidade que deveria entrar para a tabela deveria ser 4,46 mas quando vou ver na tabela, o número que aparece é: 4,46000003814697.
Desde já agradeço...
Delphi32
Curtidas 0
Respostas
Edilcimar
10/05/2005
arredonde o número antes de salvar
GOSTEI 0
Vinicius2k
10/05/2005
Colega,
Os tipos FLOAT e DOUBLE PRECISION servem exatamente para o que vc não quer: Alta precisão.
Para valores com poucos decimais e fixos, utilize os tipos NUMERIC(p,e) ou DECIMAL(p,e). Estes são os tipos ideais para armazenar valores e quantidades.
T+
Os tipos FLOAT e DOUBLE PRECISION servem exatamente para o que vc não quer: Alta precisão.
Para valores com poucos decimais e fixos, utilize os tipos NUMERIC(p,e) ou DECIMAL(p,e). Estes são os tipos ideais para armazenar valores e quantidades.
T+
GOSTEI 0