Arredondamento

03/01/2006

Fala galera!!!

Tô com um probleminha, mas não consigo resolver.

Tenho um calculo no meu sistema e quando executado as vezes me dá resultados com dizima. Eu preciso arredondar esses resultados sempre para cima, nunca para baixo.

ex: 3,33333 para 4
2,01 para 3

E assim por diante. Não sei como fazer, procurei no site e achei uma dica muito legal, mas não to conseguindo usar. Alguém pode me dizer como fazer ou usar o código abaixo.

A variável em que o resultado do meu calculo fica armazenado é: R4.

Valeu!!!!


function Sgn(X: Extended): Integer;
{ Retorna -1, 0 or 1 de acordo com o sinal do argumento }
begin
  if X < 0 then
    Result := -1
  else
    if X = 0 then
      Result := 0
    else
      Result := 1;
end;

function RoundUp(X: Extended): Extended;
{ Retorna o primeiro inteiro maior que ou igual a um
  dado número em valor absoluto (o sinal e preservado).
  RoundUp(3,3) = 4    RoundUp(-3,3) = -4 }
begin
  Result := Int(X) + Sgn(Frac(X));
end; 



Demetrius

Respostas

03/01/2006

Edilcimar

pegue a parte inteira, pegue a fração, se fração for maior que zero então pegue a parte inteira e acrescente 1


Responder Citar

03/01/2006

Demetrius

Valeu Edilcimar, mas eu sou meio lento. Vc poderia explicar onde eu coloco minha váriavel com o valor a ser arredondado e como consigo o resultado final. O resultado final vai para um edit.

Obrigado!!!!

:oops: :oops: :oops:


Responder Citar

03/01/2006

Edilcimar

numero := 1,2345
fracao := frac(numero)
inteiro := int(numero)
if fracao > 0 then
inteiro := inteiro + 1


Responder Citar

03/01/2006

Demetrius

Obrigado!!!!


Responder Citar