[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