Arredondamento
Olá pessoal,
estou com a seguinte situação
Tenho um valor no banco armazenado da seguinte forma 14650,425
preciso que no delphi ele mostre 14650,43
porem ele mostra 14650,42 e ao clicar com o mouse no dbedit ele mostra 14650,425
a regra de arredondamento diz que o valor é de 5 para cima
ja coloquei no banco tipo de campo numeric, double precision.
Todos os calculos estão no banco, por isso não posso usar o round.
o que fazer?
Meu banco é firebird, delphi 2006, dbExpress.
estou com a seguinte situação
Tenho um valor no banco armazenado da seguinte forma 14650,425
preciso que no delphi ele mostre 14650,43
porem ele mostra 14650,42 e ao clicar com o mouse no dbedit ele mostra 14650,425
a regra de arredondamento diz que o valor é de 5 para cima
ja coloquei no banco tipo de campo numeric, double precision.
Todos os calculos estão no banco, por isso não posso usar o round.
o que fazer?
Meu banco é firebird, delphi 2006, dbExpress.
Upgradesource
Curtidas 0
Respostas
Nilmarvi2005
14/10/2008
No dataset(campo desejado.)
DisplayFormat
#,0.00 exibe 2.525,20
0.00 exibe 2525,20
EditFormat
,0.00 exibe 2.525,20
0.00 exibe 2525,20
DisplayFormat
#,0.00 exibe 2.525,20
0.00 exibe 2525,20
EditFormat
,0.00 exibe 2.525,20
0.00 exibe 2525,20
GOSTEI 0
Upgradesource
14/10/2008
Amigo, já fiz isso, porem o campo informa 14650,42 quando deveria informar 14650,43
GOSTEI 0
Rafaelfornazari
14/10/2008
amigo, tem uma função ROUND que faz o arredondamento... tenta no help do delphi que la tem o exemplo dela
GOSTEI 0
Upgradesource
14/10/2008
Bom dia, então como disse no primeiro post os calculos são feitos no banco no delphi traz apenas o resultado num dbedit
por isso não posso usar o round.
Alguma outra ideia?
por isso não posso usar o round.
Alguma outra ideia?
GOSTEI 0
Juniorvieira
14/10/2008
VC FALOU :
´Tenho um valor no banco armazenado da seguinte forma 14650,425´
(NO BANCO)
Ora, se está certo no banco, quem está fazendo a cagada é seu dataset, certo ?
O delphi trabalha com uma regra de arredondamento que é :
Sempre arredondar para o numero par mais proximo quando dá alguma
conta como 1,5.
Ex: 1,5 -> arredonda para 2,0 2,5 ->arrendonda para 2.0 também
3,5 -> arredonda para 4.0 e por aí vai.....
Vc repara que ora arredonda para baixo e ora para cima. logo não é confiavel. Já pensou calcular nota de aluno ???? ia dar uma confusão só. hehehe :P .Justamente pela regra do par.
Vc deve usar alguma função do tipo truncate, eu fazia muito isso quando recebia esses tipos de valores em TXT. convertia o valor para String e brincava com o finalzinho e depois converia novamente para numero.
Abraço
´Tenho um valor no banco armazenado da seguinte forma 14650,425´
(NO BANCO)
Ora, se está certo no banco, quem está fazendo a cagada é seu dataset, certo ?
O delphi trabalha com uma regra de arredondamento que é :
Sempre arredondar para o numero par mais proximo quando dá alguma
conta como 1,5.
Ex: 1,5 -> arredonda para 2,0 2,5 ->arrendonda para 2.0 também
3,5 -> arredonda para 4.0 e por aí vai.....
Vc repara que ora arredonda para baixo e ora para cima. logo não é confiavel. Já pensou calcular nota de aluno ???? ia dar uma confusão só. hehehe :P .Justamente pela regra do par.
Vc deve usar alguma função do tipo truncate, eu fazia muito isso quando recebia esses tipos de valores em TXT. convertia o valor para String e brincava com o finalzinho e depois converia novamente para numero.
Abraço
GOSTEI 0
Upgradesource
14/10/2008
Você está certo, quem está fazendo a cagada é o delphi, ora traz para cima ora para baixo, o que eu estou pensando em fazer(estou testando) é fazer a conversão direto no banco usando o round(udf).
pois pelo que entendi vc sugere que eu utilize uma ferramenta antes de jogar dos dados para a tela. se for torna-se mais trabalhoso.
Mas muito obrigado pela atenção.
[ ]´s
pois pelo que entendi vc sugere que eu utilize uma ferramenta antes de jogar dos dados para a tela. se for torna-se mais trabalhoso.
Mas muito obrigado pela atenção.
[ ]´s
GOSTEI 0
Juniorvieira
14/10/2008
:lol: E não sei qual é seu banco. mas independente disso vc também pode fazer uma função no banco para truncar o resultado.. com a mesma idéia. ou procurar alguma fuc. matematica. acredito que já exista.
abraço.
abraço.
GOSTEI 0