GARANTIR DESCONTO

Fórum Truncar Numeros Reais #274978

01/04/2005

0

Senhorse, existe alguma função no delphi 5.0 Que podemos Truncar Um Numero , ou isto tem que ser feito na mão mesmo :?: :?: :?: :?:

Exemplo: N = 1,234567

Quero Duas casas ---->>>> n = 1,23

A alguma função Via Delphi :?: :?: :?: :?:


Marco Salles

Marco Salles

Responder

Posts

01/04/2005

Cristiam

FormatFloat(´0.00´, N)
:wink:


Responder

Gostei + 0

01/04/2005

Kotho

Você quer truncar ou arredondar?


Responder

Gostei + 0

01/04/2005

Marco Salles

Código: FormatFloat(´0.00´, N)


Obrigado CristinaM , e acrescentado que para Truncar de Fato , devemos fazer :

n:=StrToFloat(FormatFloat(´0.00´,n));


Você quer truncar ou arredondar?


Mas eu to precisando dtb e de arredondar este numero :lol: :lol: :lol: :lol:


Responder

Gostei + 0

01/04/2005

Massuda

Sem ter que converter para string e assumindo que você quer duas casas decimais...
var
  X: Double;
....

  // trunca o valor em duas casas decimais
  X := 0.01 * Trunc(100 * X);

  // arredonda o valor em duas casas decimais
  X := 0.01 * Round(100 * X);



Responder

Gostei + 0

01/04/2005

Marco Salles

Obrigado massuda :P :P :P

Senhorse, existe alguma função no delphi 5.0 Que podemos Truncar Um Numero , ou isto tem que ser feito na mão mesmo


É , tem que fazer na mão mesmo :evil: :evil: :evil: :evil: :evil:


Responder

Gostei + 0

17/11/2005

Mkoch

E se eu quise-se truncar com 1 ou 3 ou 4 ou 5 casas decimais seguindo este mesmo raciocínio.
Com 2 casas decimais (0.01) funciona legal.


Responder

Gostei + 0

17/11/2005

Ajnet

boa dica


Responder

Gostei + 0

17/11/2005

Mkoch

Se servir para alguém...
function TForm1.TruncMoney(const Valor: Currency;
  const Casas: Integer): Currency;
var
  ValorS: String;
  NumInt, NumFrac, Num: String;
  Y: Integer;
begin
  Result := 0;
  ValorS := CurrToStr(Valor);
  //Pegar a parte fracionária
  Y := Pos(DecimalSeparator, ValorS);
  if Y > 0 then
  begin
    NumInt := Copy(ValorS, 1, Y - 1);
    NumFrac := Copy(ValorS, Y + 1, Casas);
  end//if
  else
  begin
    NumInt := ValorS;
    NumFrac := ´´;
  end;//if

  //Preenche com zeros se necessário
  while Length(NumFrac) < Casas do
    NumFrac := NumFrac + ´0´;

  Num := NumInt;
  if Trim(NumFrac) <> ´´ then
    Num := Num + ´,´ + NumFrac;

  if not TryStrToCurr(Num, Result) then
    raise Exception.Create(QuotedStr(Num) + ´ não é um valor monetário valido.´);
end;



Responder

Gostei + 0

03/09/2014

Ediclo Junior

Caso alguém precise, segue função para trucar ou arredondar, informando a quantidade de casas decimais.

function TForm1.Truncar(pValor: Double; pCasasDecimais:Integer=2;pTruncar: Boolean=true): double;
var
fator : Extended;
begin

fator := Power(10,pCasasDecimais);
pValor := (fator * pValor);
if pTruncar
then pValor := Trunc(pValor)
else pValor := Round(pValor);

Result := (pValor * (1/fator));
end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar