Arredondamento

Delphi

14/10/2008

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.


Upgradesource

Upgradesource

Curtidas 0

Respostas

Nilmarvi2005

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


GOSTEI 0
Upgradesource

Upgradesource

14/10/2008

Amigo, já fiz isso, porem o campo informa 14650,42 quando deveria informar 14650,43


GOSTEI 0
Rafaelfornazari

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

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?


GOSTEI 0
Juniorvieira

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


GOSTEI 0
Upgradesource

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


GOSTEI 0
Juniorvieira

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.


GOSTEI 0
POSTAR