[firebase-br] Arredondamento de Parcelas

marcelo - teflamar marcelo em teflamar.com.br
Seg Set 25 14:25:12 -03 2006


dica tirada da activedelphi:

implementation

//implementação da função para o caso de não usar a unit Math
function Power(Base, Exponent :Extended) :Extended;
var
  Valor :Extended;
begin
  Result := 1;
  while Exponent > 0 do
  begin
    Result := Result * Base;
    Exponent := Exponent -1;
  end;
end;

function Arredonda1(Valor :Double; Casas: Byte) :Double;
var
  StrFormat :String;
begin
  StrFormat := '#.';
  while Casas > 0 do
  begin
    // inicializa quantidade de zeros ref. as casas decimais desejadas
    StrFormat := StrFormat +'0';
    Dec(Casas);
  end;
  Result := StrToFloat(FormatFloat(StrFormat, Valor));
end;

function Arredonda2(Valor :Double; Casas: Byte) :Double;
var
  Multiplicador :Extended;
begin
  Multiplicador := Power(10, Casas); // unit Math ou função acima
  // desloca casas à direita e arredonda
  Valor := Round(Valor * Multiplicador);
  // retorna casas à esquerda
  Result := Valor/Multiplicador;
end;

{$R *.dfm}
...
Para testar, adicione ao form um button e duas labels. No onClick do button, 
faça:

procedure TForm1.Button1Click(Sender: TObject);
var
  Valor :Double;
begin
  Valor := 8386.428;
  Label1.Caption := FloatToStr(Arredonda1(Valor, 2));
  Label2.Caption := FloatToStr(Arredonda2(Valor, 2));
end;----- Original Message ----- 
From: "Renan de Oliveira" <renan em safetech.inf.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, September 25, 2006 2:04 PM
Subject: Re: [firebase-br] Arredondamento de Parcelas


creio q isso deva lhe ajudar

http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=403&mode=thread&order=0&thold=0


Renan de Oliveira
Safetech Informática
(51) 3529-3870
----- Original Message ----- 
From: "ibestvip" <zottissistemas em ibestvip.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, September 25, 2006 1:54 PM
Subject: Re: [firebase-br] Arredondamento de Parcelas


Entendi, mas se eu multiplicar

 842,67 * 100 = 84267,00
que dividido por 2 é = 421335
e ao dividir 421335/100 = 421,335

Valeu pela ajuda,
mas na prática, alguém tem um código para resolver este problema?

Pois já tentei de tudo que estava no meu conhecimento, e não consegui
resolver.


Zottis.

PS: Tem como pegar somente os dois numeros depois da Vírgula?




______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa




______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista