ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO] Conversão errada do StrToFloat

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
CCCPPP
Novato
Novato


Registrado: Sábado, 9 de Abril de 2011
Mensagens: 41

MensagemEnviada: Qui Dez 22, 2011 7:49 pm    Assunto: [RESOLVIDO] Conversão errada do StrToFloat Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Dez 22, 2011 7:55 pm    Assunto: Responder com Citação

Qual banco de dados você está utilizando?
Qual o tipo dos campos no banco de dados?

__________________
Assinatura: Imoveis em Suzano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
CCCPPP
Novato
Novato


Registrado: Sábado, 9 de Abril de 2011
Mensagens: 41

MensagemEnviada: Qui Dez 22, 2011 7:58 pm    Assunto: Responder com Citação

Firebird 2.5

Tabela M_PRIMAS com os campos CODIGO:integer , NOME: string, QUANTIDADE:Float, LOCALIZACAO:String, PRECO_COM:Float;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Dez 22, 2011 8:10 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Dez 26, 2011 9:33 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
CCCPPP
Novato
Novato


Registrado: Sábado, 9 de Abril de 2011
Mensagens: 41

MensagemEnviada: Seg Dez 26, 2011 9:41 am    Assunto: [RESOLVIDO] Responder com Citação

Com o que o imex sugeriu realmente deu certo. Obrigado. Resolvido.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Dez 26, 2011 9:56 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
leogazio
Colaborador
Colaborador


Registrado: Domingo, 18 de Fevereiro de 2007
Mensagens: 1047
Localização: Alto Paraná - PR

MensagemEnviada: Sex Jan 20, 2012 12:25 am    Assunto: Re: [RESOLVIDO] Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB