fezinha 0 Denunciar post Postado Agosto 25, 2006 Pessoal,Estou o seguinte problema.Eu tenho esse código: Query1.Close; Query1.SQL.Add('insert into teste (teste1) values (:P_float)'); Query1.ParamByName('p_float').asfloat := strtofloat(dt_float.text); Query1.ExecSQL;Insiro no edit o seguinte valor: 435020,17Ele incluir na SQL o valor 435020,17 mas grava no banco o seguinte valor: 435020,15625Mesmo que eu arredonde para mostrar na grid, vai ficar assim: 435020,16 enão 435020,17 como digitei!E eu não posso alterar o campo de FLOAT para NUMERIC (ou outro) pois o banco docliente já tem valor nesse campo, e mesmo que eu repasse os valores para um camponumeric, não vai ficar com o valor exato.Alguém sabe o que tenho que fazer?Obrigada,Fernanda Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 25, 2006 Faça um teste da seguinte forma: function TForm1.FormataNumero(num: double): string;var str: string; x: integer;beginstr:=FloatToStr(num);for x:=1 to length(str) do if str[x] = ',' then str[x]:='.';FormataNumero:=str;end;procedure TForm1.BitBtn1Click(Sender: TObject);beginQuery1.Close;Query1.SQL.Clear;Query1.SQL.Add('insert into teste (teste1) values (' + FormataNumero(StrToFloat(dt_float.text)) + ')');Query1.ExecSQL;end; Compartilhar este post Link para o post Compartilhar em outros sites
fezinha 0 Denunciar post Postado Agosto 25, 2006 Não deu certo!Gravou a mesma coisa!Digitei 435020,17 - Gravou 435020,15625 Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 25, 2006 Não entendo mais nada, hehehehe, usso exatamente como lhe passei no sistema aqui, e insere exatamente o que eu mandar, naum tem alguma função no BD ou algo especial no tipo de campo q faz isto ? Compartilhar este post Link para o post Compartilhar em outros sites
fezinha 0 Denunciar post Postado Agosto 25, 2006 Estou fazendo isso em um banco teste.Olhe a tabela:CREATE TABLE "TESTE" ( "TESTE1" FLOAT);Não tem mais nada além disso!Não estou entendendo o que está acontecendo.Se eu digito direto no banco e dou commit acontece o mesmo!Me ajude.Fernanda Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 25, 2006 Qual o BD ? Compartilhar este post Link para o post Compartilhar em outros sites
fezinha 0 Denunciar post Postado Agosto 25, 2006 Interbase Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 25, 2006 Já tentou criar ele como Double Precision ? Compartilhar este post Link para o post Compartilhar em outros sites
fezinha 0 Denunciar post Postado Agosto 25, 2006 Mas eu não posso mudar o tipo do campo! Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 25, 2006 Realmente acontece isto, criei uma tabela com campo FLOAT e dgitei o valor que você mencionou e realmente ele adiciona casas depois da vírgula, agora fiquei curioso em saber o q pode ser, hehehe Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 25, 2006 Achei isto na net -> http://www.firebird.com.br/faq.php?topic=4 tem como resolver, mas eu não garanto que irá funcionar, nem testei para ver se realmente funciona. Compartilhar este post Link para o post Compartilhar em outros sites
fezinha 0 Denunciar post Postado Agosto 25, 2006 Você se referiu a dica:Como resolver problema de arredondamento em colunas tipo Float?Mas nessa dica o autor disse que se eu ainda não tive problemas com o Float, eu deve fazer esse procedimento.Quer dizer, se eu já tenho na minha base de dados esses valores como: 435020,15625e Mudar para numeric ele vai para 435020,16 e não 435020,17 como deveria.Então pra mim isso não adianta!E muito esquisito isso, não? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 25, 2006 Li algumas coisa pela net de que o campo Float realmente age desta forma, ele arredonda até 7 casas depois da vírgula, mas por qual motivo você não pode alterar o campo ? Compartilhar este post Link para o post Compartilhar em outros sites