Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
CCCPPP Novato

Registrado: Sábado, 9 de Abril de 2011 Mensagens: 41
|
Enviada: Qui Dez 22, 2011 7:49 pm Assunto: [RESOLVIDO] Conversão errada do StrToFloat |
|
|
Parece ser algo banal, mas ao tentar fazer uma simples conversão de um texto de uma edit para um float e colocar no banco de dados, o valor armazenado é diferente. Ex: Quando mando por 1,23 o que aparece na tabela é 1,2300000190735. Sei que em um cálculo isso é quase desprezível, mas é um erro e gostaria de corrigi-lo, até porque no DBGrid é mostrado o valor incorreto.
Para testar se o erro era na conversão:
ShowMessage(FloatToStr(StrToFloat(EditPreco_uni.Text)));
O showmessage me retorna exatamente 1,2 Então acho que o problema é com o Firebird.
Segue meu código:
Procedure TFDataModule.Inserir_M(Codigo, Nome, Quantidade, Localizacao, Preco_com:string);
begin
Query_I_AA.Close; //preco de compra
Query_I_AA.SQL.Text:='insert into M_PRIMAS values(:CODIGO,:NOME,:QUANTIDADE,:LOCALIZACAO, :PRECO_COM)';
Query_I_AA.ParamByName('CODIGO').AsInteger := StrToInt(Codigo);
Query_I_AA.ParamByName('NOME').AsString := Nome;
Query_I_AA.ParamByName('QUANTIDADE').AsFloat := StrToFloat(Quantidade);
Query_I_AA.ParamByName('LOCALIZACAO').AsString := Localizacao;
Query_I_AA.ParamByName('PRECO_COM').AsFloat := StrToFloat(Preco_com);
Query_I_AA.ExecSQL;
end;
Editado pela última vez por CCCPPP em Seg Dez 26, 2011 10:50 am, num total de 1 vez |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Dez 22, 2011 7:55 pm Assunto: |
|
|
Qual banco de dados você está utilizando?
Qual o tipo dos campos no banco de dados?
__________________
Assinatura: Imoveis em Suzano |
|
Voltar ao Topo |
|
 |
CCCPPP Novato

Registrado: Sábado, 9 de Abril de 2011 Mensagens: 41
|
Enviada: Qui Dez 22, 2011 7:58 pm Assunto: |
|
|
Firebird 2.5
Tabela M_PRIMAS com os campos CODIGO:integer , NOME: string, QUANTIDADE:Float, LOCALIZACAO:String, PRECO_COM:Float; |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Dez 22, 2011 8:10 pm Assunto: |
|
|
Este problema deve estar ocorrendo em função do tipo Float na tabela do Firebird.
Experimente alterar de Float para Decimal (ex: Decimal(9,2) para um número com até 7 inteiros e 2 decimais).
Espero que ajude. |
|
Voltar ao Topo |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Seg Dez 26, 2011 9:33 am Assunto: |
|
|
Para valores monetários eu utilizo o numeric ou decimal, faça um teste com o imex citou.
qualquer coisa volte a postar _________________ Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso. |
|
Voltar ao Topo |
|
 |
CCCPPP Novato

Registrado: Sábado, 9 de Abril de 2011 Mensagens: 41
|
Enviada: Seg Dez 26, 2011 9:41 am Assunto: [RESOLVIDO] |
|
|
Com o que o imex sugeriu realmente deu certo. Obrigado. Resolvido. |
|
Voltar ao Topo |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Seg Dez 26, 2011 9:56 am Assunto: |
|
|
ok, qui bom que deu certo!
só coloca como "resolvido" no título do tópico para ajudar o fórum. _________________ Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso. |
|
Voltar ao Topo |
|
 |
leogazio Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007 Mensagens: 1047 Localização: Alto Paraná - PR
|
Enviada: Sex Jan 20, 2012 12:25 am Assunto: Re: [RESOLVIDO] |
|
|
CCCPPP escreveu: | Com o que o imex sugeriu realmente deu certo. Obrigado. Resolvido. |
Amigo sei que o post já foi fechado mas peço que por favor poste as suas dúvidas nas devidas seções do fórum, embora este tópico envolva banco de dados, não é "Banco de Dados" e sim "Delphi". Ajude a manter o fórum organizado... _________________ Leonardo Gazio - Consultoria e Suporte a Desenvolvedores.
Suporte para todo o Brasil via;
E-mail: leonardogazio@delphimasters.com
Msn: lngsmattos@hotmail.com
Claro: (21) 7301-7243 |
|
Voltar ao Topo |
|
 |
|