Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fezinha

Erro no campo float

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.