Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como redondear a partir del numero 5 (https://www.clubdelphi.com/foros/showthread.php?t=87906)

maxzama 16-03-2015 16:10:30

Como redondear a partir del numero 5
 
Hola.

Programa a utilizar:

- Delphi xe2

Pregunta y problema:

- E probado varios códigos de redondeo, y me e dado cuenta de que No redondea a partir del numero 5, sino del numero 6.

Hay algún código que me redondee a partir del numero 5. Ejemplo:

35,145 = 35,15

___________________________________________

Código a utilizar para redondear:

- RoundTo(I,-2), -Str (I:2:2,Texto)


Espero sus respuesta por favor y gracias...

cancun 16-03-2015 17:43:02

Hola



Puedes hacer una función para redondear, algo asi como:

Código:

function Redondea(Numero:Real;Decimal:Integer;Redondeo:Real=0.5):Real;
var I:Currency;
begin
  I:=Numero;if Numero<0.0 then Redondeo:=-Redondeo;
  case Decimal of
    0:I:=Int((Numero*10+Redondeo*10)/10);
    1:I:=Int(Numero*10+Redondeo)/10;
    2:I:=Int(Numero*100+Redondeo)/100;
    3:I:=Int(Numero*1000+Redondeo)/1000;
    4:I:=Int(Numero*10000+Redondeo)/10000;
  end;
  Result:=I;
end;

Saludos y suerte

maxzama 16-03-2015 20:21:23

Me da erróneo el resultado.

Aquí te muestro el cogido: (C= 1124,52 )
Código Delphi [-]
var

I:Real;
I1:string;
I2:Currency;
Numero:Real;
Decimal:Integer;
Redondeo:Real;

begin
         I1:='0,01';
         I:=STRTOFloat(I1);
         I:=I*C;                 // I= 11,25
         I2:=I;
         Redondeo:=0.5;
         if Numero<0.0 then
         Redondeo:=-Redondeo;
         case Decimal of
            0:I2:=Int((Numero*10+Redondeo*10)/10);
            1:I2:=Int((Numero*10+Redondeo)/10);
            2:I2:=Int((Numero*100+Redondeo)/100);
            3:I2:=Int((Numero*1000+Redondeo)/1000);
            4:I2:=Int((Numero*10000+Redondeo)/10000);
         end;
         I:=I2;
         Edit59.Text:=FloatToStr(I);             // El resultado Da 0
end;

________________________________________

No se que es lo que me falta o tengo malo.

Espero tu respuesta por favor y gracias...

Casimiro Notevi 16-03-2015 20:26:47

Cita:

Empezado por maxzama (Mensaje 490077)
...

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

maxzama 16-03-2015 20:35:58

Gracias por la corrección del mensaje.

Sabes algo de lo tratado.

Espero tu respuesta por favor y gracias...

escafandra 17-03-2015 01:54:48

Prueba algo como esto:

Código Delphi [-]
function RoundTo(F: single; d: integer): double;
var
  p: double;
begin
  p:= Power(10, d);
  Result:= trunc(F*p+0.5)/p;
end;

Donde F es el valor que quieres redondear y d el decimal donde quieres redondear.

Saludos.

olbeup 17-03-2015 15:02:06

Cita:

Empezado por maxzama (Mensaje 490070)
Hola.

Programa a utilizar:

- Delphi xe2

Pregunta y problema:

- E probado varios códigos de redondeo, y me e dado cuenta de que No redondea a partir del numero 5, sino del numero 6.

Hay algún código que me redondee a partir del numero 5. Ejemplo:

35,145 = 35,15

___________________________________________

Código a utilizar para redondear:

- RoundTo(I,-2), -Str (I:2:2,Texto)


Espero sus respuesta por favor y gracias...

Hola maxzama,

Prueba realizada con Delphi 7
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Double;
begin
  I := 35.145;
  Label1.Caption := FormatFloat('0.00', I);
  I := RoundTo(I, -2);
  Label2.Caption := FormatFloat('0.00', I);
end;
Resultado = 35.15, con el RoundTo es mas que suficiente.

Un saludo.


La franja horaria es GMT +2. Ahora son las 03:13:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi