GARANTIR DESCONTO

Fórum Casas Decimais ... #216403

25/02/2004

0

Galera...
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

Gustavolange

Responder

Posts

26/02/2004

Lucas Silva

edit1.text := formatFloat(´0.00´, VARIAVEL_FLOAT).



Responder

Gostei + 0

26/02/2004

Diogoalles

o interessante seria vc utilizar Numeric ou Decimal ao invés de utilizar o tipo Float ....
o Float guarda valores como por exemplo 15,289999999 ... eqto o tipo decimal ou numeric seria 15,29.....


abraço


Responder

Gostei + 0

26/02/2004

Gustavolange

vou explicar melhor.
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


Responder

Gostei + 0

26/02/2004

Diogoalles

Olá

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


Responder

Gostei + 0

26/02/2004

Gustavolange

Ta blz Diogo, vo muda os campos da minha tabela e qualque coisa eu posto aqui de novo!

Origado!


Responder

Gostei + 0

26/02/2004

Diogoalles

em minha resposta anterior acabei escrevendo q vc deveria utilizar ´numeric ou float´ , eu quis dizer Numeric ou Decimal que são os corretos.

abraço


Responder

Gostei + 0

26/02/2004

Gustavolange

Diogo...
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?


Responder

Gostei + 0

26/02/2004

Diogoalles

a princío não tem nenhum detalhe
me passe a função q vc está usando

antes, tente utilizar Numeric (9,2)

abraço

Diogo


Responder

Gostei + 0

26/02/2004

Gustavolange

Diogo...
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


Responder

Gostei + 0

26/02/2004

Diogoalles

tente utilizar FormatFloat

´,´+quotedstr(FormatFloat(´#,,,0.00´,StrToCurr(edtPreco.text));


abraço


Responder

Gostei + 0

26/02/2004

Gustavolange

nada de funcionar Diogo...
eu ja tinha tentado com formatfloat...
segue o erro...

´generic sql error.
arithmetic exception, numeric overflow, or string truncation´

mais alguma ideia ???

abraço


Responder

Gostei + 0

26/02/2004

Gustavolange

mais nem 1 ideia ???


Responder

Gostei + 0

26/02/2004

Diogoalles

que banco de dados vc utiliza ?

Firebird tem q ser Dialeto 3
e ver se vc está definindo charset e collate

vc acessa via bde ?


Responder

Gostei + 0

26/02/2004

Gustavolange

eu to usando Interbase 6 e BDE


Responder

Gostei + 0

27/02/2004

Gustavolange

Será que ninguem tem uma função pra resolver esse problema?

e se eu usar VarChar, consigo fazer meus cálculos normalmente???


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar