Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
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...
Responder Con Cita
  #2  
Antiguo 16-03-2015
cancun cancun is offline
Miembro
 
Registrado: may 2003
Ubicación: Cancun, México
Posts: 114
Poder: 21
cancun Va por buen camino
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
__________________
Cancun, Q.Roo, México
Responder Con Cita
  #3  
Antiguo 16-03-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
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...

Última edición por maxzama fecha: 16-03-2015 a las 20:34:08.
Responder Con Cita
  #4  
Antiguo 16-03-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por maxzama Ver Mensaje
...
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #5  
Antiguo 16-03-2015
maxzama maxzama is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 126
Poder: 13
maxzama Va por buen camino
Gracias por la corrección del mensaje.

Sabes algo de lo tratado.

Espero tu respuesta por favor y gracias...
Responder Con Cita
  #6  
Antiguo 17-03-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
  #7  
Antiguo 17-03-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por maxzama Ver Mensaje
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.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 17-03-2015 a las 15:10:22.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con numero de archivos a partir de ruta danielmj Varios 3 21-10-2013 17:43:29
Como generar un numero entero a partir de una mascarilla dad AzidRain Varios 4 25-07-2007 01:53:48
Como redondear un numero en un procedimiento en Firebird Gaby123 SQL 0 26-02-2007 18:25:26
Redondear un número en coma flotante a cualquier precisión Neftali [Germán.Estévez] Trucos 0 30-06-2006 14:29:32
Genrar registros a partir de una fecha y numero mosorio Firebird e Interbase 2 05-11-2004 09:40:16


La franja horaria es GMT +2. Ahora son las 09:22:15.


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
Copyright 1996-2007 Club Delphi