Ver Mensaje Individual
  #1  
Antiguo 12-04-2016
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 512
Reputación: 19
Neeruu Va por buen camino
Error al Multiplicar (Función de Redondeo)

Hola a todos, tengo la siguiente función para redondear:

Código Delphi [-]
Function Redondear (Numero : Double; PrecisionDec : byte) : double;
  function Potencia(Base : Double; Exponente : byte) : Double;
  begin
    Result := Exp(Exponente * ln(Base));
  end;
var Nro:Single;
iRound:Integer;
begin
  Nro := Numero * Potencia(10, PrecisionDec);

  if (Frac(Nro))>=0.5 then
    iRound := 1
  else
  if (Frac(Nro))<=-0.5 then
    iRound := -1
  else iRound := 0;

  Result := (Trunc(Nro)+iRound) / Potencia(10, PrecisionDec);
end;

Pero cuando redondeo este valor :247999.57 a 2 decimales el valor de la variable Nro es de 24799958, cuando debería ser 24799957...

O sea el error esta en esta linea:
Código Delphi [-]
  Nro := Numero * Potencia(10, PrecisionDec);

Alguien sabe porque se puede dar esto?

Saludos...
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita