Arredondamento - Alguem já viu isso??

Delphi

16/03/2006

Boa Tarde...

Estou com um dilema. Possuo uma DBGrid, e uma determinada coluna eu tenho que digitar a quantidade do produto, essa quantidade é uma decimal.
Se eu colocar 5,29, a bendita DbGrid preenche 5,2900000065441 gostaria de saber como posso resolver esse problema. Abaixo segue o código da minha tentativa não sucedida...


  
if (DBGrid2.SelectedIndex = 4) and (Key = #9) then
    begin
      sCampo := DBGrid2.Fields[3].AsFloat;
      sCampo := Round(sCampo*100)/100;
      DBGrid2.Fields[3].AsFloat := sCampo;
    end


Ele até executa o código, porém na Grid ainda mantém o valor com todas as casas decimais...


agradeço a atenção


Facc

Facc

Curtidas 0

Respostas

Paullsoftware

Paullsoftware

16/03/2006

tente assim:
if (DBGrid2.SelectedIndex = 4) and (Key = #9) then
begin
sCampo := DBGrid2.Fields[3].AsFloat;
sCampo := Round(sCampo*100)/100;
DBGrid2.Fields[3].AsString := FormatFloat(´,,0.00´,sCampo);
end


GOSTEI 0
Marco Salles

Marco Salles

16/03/2006

Bem , pode ate dar certo o que o Paulo Lhe sugeriu , mas acho que as Informações sobre o tipo de Banco , O tipo do Dado , os Componentes de Acesso etc , devem serem informadas


GOSTEI 0
Facc

Facc

16/03/2006

tente assim: if (DBGrid2.SelectedIndex = 4) and (Key = #9) then begin sCampo := DBGrid2.Fields[3].AsFloat; sCampo := Round(sCampo*100)/100; DBGrid2.Fields[3].AsString := FormatFloat(´,,0.00´,sCampo); end



Valeu pela ajuda amigo...


Consegui resolver por outro modo

no proprio campo da Query, eu coloquei
,,0.00
nos eventos DisplayFormat e EditFormat.


GOSTEI 0
Paullsoftware

Paullsoftware

16/03/2006

f (DBGrid2.SelectedIndex = 4) and (Key = #9) then 
begin 
sCampo := DBGrid2.Fields[3].AsFloat; 
sCampo := Round(sCampo*100)/100; 
DBGrid2.Fields[3].AsString := FormatFloat(´,,0.00´,sCampo); 
end

Bem , pode ate dar certo o que o Paulo Lhe sugeriu , mas acho que as Informações sobre o tipo de Banco , O tipo do Dado , os Componentes de Acesso etc , devem serem informadas
correto Marcos, pois, se a informação vem do campo de uma tabela, se esse campo for do tipo, Numeric, Float, Currency ou semelhante... basta mudar a propriedade [b:1e794ef0d2]Currency[/b:1e794ef0d2] do campo para [b:1e794ef0d2]TRUE[/b:1e794ef0d2]..


GOSTEI 0
Alexandre_torres

Alexandre_torres

16/03/2006

tenta mutiplicar o Round por 10 e dividir por 10

T+


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

16/03/2006

Colega,

Existem diversas formas, algumas já apresentadas. Posso citar também:

if (DBGrid2.SelectedIndex = 4) and (Key = #9) then
begin
  DBGrid2.Fields[3].AsCurrency := Trunc(DBGrid2.Fields[3].AsCurrency*100)/100;
end;



GOSTEI 0
POSTAR