Arredondamento - É Impossível ???

16/12/2003

1

ARREDONDAMENTO (denovo)

Preciso de uma função de arredondamento que sigua as regras matematicas !!!!!!!!!


Ex:
1,604 => 1,60
1,605 => 1,61
1,606 => 1,61


ME AJUDEM !!!!


Responder

Posts

16/12/2003

Ricvictor

Olá MarFred ...

No delphi, podesse usar as funções de conversões do tipo FloatToStrF ... aonde você especifica a quantidade de casas, a precisão etc etc etc ... Se necessitar que fique em float mesmo, a variável, basta você converter o resultado novamente para float ... (exemplo: [b:1ad052a2e6]Variável:=StrToFloat(FloatToStrF(campo decimal))[/b:1ad052a2e6]) Caso você queria apenas armazenar o valor já arredondado na sua base de dados, caso seja em SQL, pode-se usar diretamente a função convert ... (exemplo: [b:1ad052a2e6]convert(Numeric(5,2),variavel)[/b:1ad052a2e6]) ... ok ?!

Um abraço.
Ricardo - Natal/RN.


Responder

16/12/2003

Nebrio

Ou apenas usando o FormarFloat assim

Edit1.Text := FormatFloat(´#,0.00´,valor);

T+

Nébrio - Vivo


Responder

16/12/2003

Cebikyn

Se quiser arredondar o valor, sem transformar em string:

function RoundN(x: Extended; d: Integer): Extended;
const
  t: array [0..12] of int64 = (1, 10, 100, 1000, 10000, 100000,
      1000000, 10000000, 100000000, 1000000000, 10000000000,
      100000000000, 1000000000000);
begin
  if Abs(d) > 12 then
    raise ERangeError.Create(´RoundN: Value must be in -12..12´);
  if d = 0 then
    Result := Int(x) + Int(Frac(x) * 2)
  else if d > 0 then begin
    x := x * t[d];
    Result := (Int(x) + Int(Frac(x) * 2)) / t[d];
  end else begin  // d < 0
    x := x / t[-d];
    Result := (Int(x) + Int(Frac(x) * 2)) * t[-d];
  end;
end;


Exemplo:

  RoundN(123.456, 0) = 123.00
  RoundN(123.456, 2) = 123.46
  RoundN(123456, -3) = 123000



Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira