arredondar resultado em valor tipo doulbe

Delphi

10/06/2015

procedure TForm1.Button6Click(Sender: TObject);

var
v1,v2 : double;

begin
v1 := StrToFloat(Edit13.Text);
v2 := StrToFloat(Edit3.Text);
Edit23.Text := FloatToStr(v1/(1-0.01*v2)/0.98);

end;

procedure TForm1.Button7Click(Sender: TObject);

var
v1,v2 : double;

begin
v1 := StrToFloat(Edit18.Text);
v2 := StrToFloat(Edit3.Text);
Edit26.Text := FloatToStr(v1/(1-0.01*v2));
Jhonata Mazaia

Jhonata Mazaia

Curtidas 0

Respostas

Dorivan Sousa

Dorivan Sousa

10/06/2015

testa ai qual a melhor opção
varias rotinas pra arrendondamento
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;

function Arredondar(Valor: Double; Dec: Integer): Double;
var
  Valor1,
  Numero1,
  Numero2,
  Numero3: Double;
begin
  Valor1:=Exp(Ln(10) * (Dec + 1));
  Numero1:=Int(Valor * Valor1);
  Numero2:=(Numero1 / 10);
  Numero3:=Round(Numero2);
  Result:=(Numero3 / (Exp(Ln(10) * Dec)));
end;

function ArredondarNumero(valor: extended;  decimais: integer): extended;
var
  factor, fraction: extended;
begin
  factor := intPower(10, decimais);
  valor:= strToFloat(floatToStr(valor * factor));
  result := int(valor);
  fraction := frac(valor);
  if fraction >= 0.5 then
     result := result + 1
  else if fraction <= -0.5 then
     result := result - 1;
  result := result / factor;
end;

function RoundNum(Valor:Extended;Decimais:Integer):Extended;
{Quando houver,Arredonda uma possivel terceira casa decimal em uma variável}
var
  I:Integer;
  Multiplicador:Integer;
begin
  if Decimais > 15 then
  begin
    Decimais := 15;
  end
  else if Decimais < 0 then
  begin
    Decimais := 0;
  end;
  Multiplicador := 1;
  for I:=1 to Decimais do
  begin
    Multiplicador := Multiplicador*10;
  end;
  Result := round(Valor*Multiplicador)/Multiplicador;
end;

function Arredondar_Abaixo(Valor: Double; Dec: Integer): Double;
var
  Aux: String;
  Pos_Eq: Integer;
begin
  Aux:=FormatFloat('###,###,###,##0.0000000',Valor);
  Pos_Eq:=Pos(',',Aux);
  Result:=StrToFloat(Pontos(Copy(Aux,1,Pos_Eq+Dec)));
end;

function Truncar(Valor: Double; Dec: Integer): Double;
var
  Aux: String;
  Pos_Eq: Integer;
begin
  Aux:=FormatFloat('###,###,###,##0.0000000',Valor);
  Pos_Eq:=Pos(',',Aux);
  Result:=StrToFloat(Pontos(Copy(Aux,1,Pos_Eq+Dec)));
//  Result:=Valor;

end;
GOSTEI 0
POSTAR