Buscar

Arredondar casas decimais de forma personalizada

Código

// 1) Na seção de procedures digite:

Function Arredondar(value: double;casas : integer): double;

// 2) Na seção implementation digite a função conforme descrita abaixo:

Function Tform1.Arredondar(value: double;casas : integer): double;
Var
fracao, Total:real;
decimal:string;
begin
   try
   fracao:=Frac(value); //Retorna a parte fracionária de um número
   decimal:=(RightStr(floattostr(fracao),length(floattostr(fracao))-2)); //decimal recebe a parte decimal
//Enquanto o tamanho da variavel decimal for maior que o número de casas faça
      while length(decimal) > casas do
      begin
      //Verifica se o último digito da variável decimal é maior que 5
      if strtoint(RightStr(decimal,1))>5 then
      begin
      //Descarta o último digito da variável Decimal
      decimal:=leftstr(decimal,length(decimal)-1);
      //Soma o valor número da variavel decimal + 1
      decimal:=floattostr(strtofloat(decimal) + 1);
      end
   else
   decimal:=leftstr(decimal,length(decimal)-1); //Descarta o último digito da variável Decimal
   end;
result:=(int(value) + (strtofloat(decimal)/100)); //devolve o resultado para a função
except
Raise Exception.Create('Erro no arredondamento');
   end;
end;

{
Como usar:

Arredondar(Campo ou vaiável do tipo Real (Float) , número de casas decimais desejado);

Ex:
Var valor,Resultado:real;
Valor:=10.005.526
Resultado :=Arredondar(valor,2);
Resultado=10.005,53

 }

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Forms
Adicionada dia: 24/10/07
Por: João Márcio
Visualizada: 22219 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009