Fórum Casas Decimais ... #216403
25/02/2004
0
Como que fasso para salvar um valor na minha tabela com apenas duas casas após a virgula?
ja tentei varias funcoes que axei aqui no clube, mas nada funciona.
O interessante é que por exemplo, se eu salvar um valor como, 50,50 ele salva assim mesmo
mas se eu salvo como 50,30 ele salva alguma coisa como 50,298745200245 entendem ???
Alguem pode me ajudar???
Obrigado.
Gustavo
gustavo@joscil.com.br
Gustavolange
Curtir tópico
+ 0Posts
26/02/2004
Lucas Silva
edit1.text := formatFloat(´0.00´, VARIAVEL_FLOAT).
Gostei + 0
26/02/2004
Diogoalles
o Float guarda valores como por exemplo 15,289999999 ... eqto o tipo decimal ou numeric seria 15,29.....
abraço
Gostei + 0
26/02/2004
Gustavolange
na edit eu digito o preço de custo, 4561,97 e na tabela ele salva como 4561,979999547805427.
ja tentei usar algumas variaveis auxiliares para transformar o valor,
varAux := formatfloat(´0.00´,edtPrecoCusto.text); ele salvou o valor sem a virgula!
Não sei mais o que fazer, alguem pode me ajudar? Abaixo Segue exemplo do código utilizado
para inserção na tabela!
MySQL(dm.qryGenerica,´insert into produtos (cod,produto,preco,unMed,dtInc,prcusto,narrativa,ipi) values ´+
´(´+lblCod.caption+´,´+quotedstr(edtProduto.text)+
//aqui acontece o problema
´,´+quotedstr(tranlateval(edtPreco.text))+
´,´+quotedstr(cmbUnMed.text)+
´,´+quotedstr(lblDate.caption)+
//aqui acontece o problema tambem!
´,´+quotedstr(tranlateval(edtPrecoCusto.text))+
´,´+quotedstr(mm.lines.text)+´,´+quotedstr(tranlateval(edtIpi.text))+´)´)
e ai???hehe
alguem me ajuda?
Desde já agradeço!
Gustavo
gustavo@joscil.com.br
Gostei + 0
26/02/2004
Diogoalles
bem , como eu dizia é exatamente problema por causa do tipo de dado do campo na tabela.. qdo for Float assim como o Double precision utilizam um formato determinado pelo IEEE q ñ garante a precisão dos valores, por isso deve ser usado Numeri ou Float.
Você pode utilizar uma função para arrendodar os valores float, q é o q eu fazia qdo utilizava campos Float e tinha esse problema.
abraço
Diogo
Gostei + 0
26/02/2004
Gustavolange
Origado!
Gostei + 0
26/02/2004
Diogoalles
abraço
Gostei + 0
26/02/2004
Gustavolange
mudei todos os campos float da minha tabela por decimal(9,2), mas agora se eu coloco tipo 9564,61 ele salva na tabela como 956461,00...
o que que é isso?
preciso usa alguma otra função pra gravar os dados na tabela?
Gostei + 0
26/02/2004
Diogoalles
me passe a função q vc está usando
antes, tente utilizar Numeric (9,2)
abraço
Diogo
Gostei + 0
26/02/2004
Gustavolange
como mudei os campos para ´numeric(9,2)´ não estou usando mais nem uma função, o código é
o que postei acima sem a função ´tranlateval´, mas segue abaixo novamente !
MySQL(dm.qryGenerica,´insert into produtos (cod,produto,preco,unMed,dtInc,prcusto,narrativa,ipi) values ´+
´(´+lblCod.caption+´,´+quotedstr(edtProduto.text)+
//aqui
´,´+quotedstr(edtPreco.text)+
´,´+quotedstr(cmbUnMed.text)+
´,´+quotedstr(lblDate.caption)+
//aqui
´,´+quotedstr(edtPrecoCusto.text)+
´,´+quotedstr(mm.lines.text)+´,´+quotedstr(tranlateval(edtIpi.text))+´)´)
Ok?
A mudei de decimal para numeric, continua o mesmo erro !
Abraço
Gustavo
Gostei + 0
26/02/2004
Diogoalles
´,´+quotedstr(FormatFloat(´#,,,0.00´,StrToCurr(edtPreco.text));
abraço
Gostei + 0
26/02/2004
Gustavolange
eu ja tinha tentado com formatfloat...
segue o erro...
´generic sql error.
arithmetic exception, numeric overflow, or string truncation´
mais alguma ideia ???
abraço
Gostei + 0
26/02/2004
Gustavolange
Gostei + 0
26/02/2004
Diogoalles
Firebird tem q ser Dialeto 3
e ver se vc está definindo charset e collate
vc acessa via bde ?
Gostei + 0
26/02/2004
Gustavolange
Gostei + 0
27/02/2004
Gustavolange
e se eu usar VarChar, consigo fazer meus cálculos normalmente???
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)