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 11-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Elevando una cifra

Hola a todos, tengo una simple duda...

Digamos que tengo este número 35.459, ¿existe alguna fórmula en Delphi para que se convierta en 40.000?; o por ejemplo 27.684 a 30.000

De antemano gracias
Responder Con Cita
  #2  
Antiguo 11-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(inttostr(round(35.459*0.1)*10));
  ShowMessage(inttostr(round(27.684*0.1)*10));
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 11-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Gracias amigo... pero hay un pequeño problema, en este caso no podría multiplicar por 10 ya que el resultado sería 40 ó 30 para el segundo caso, habría que multiplicarlo por 1.000, pero digamos que tuviera 4.556 para convertirlo a 5.000 sería por 100...
Se que es un algoritmo fácil, pero estoy un tanto frio de mente hoy ... y evito tener que evaluar si cada número es mayor de 10, 100, 1.000... etc
Responder Con Cita
  #4  
Antiguo 11-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por felipe88 Ver Mensaje
Gracias amigo... pero hay un pequeño problema, en este caso no podría multiplicar por 10 ya que el resultado sería 40 ó 30 para el segundo caso, habría que multiplicarlo por 1.000, pero en el caso de que tuviera 4.556 para convertirlo a 5.000 sería por 100...
Se que es un algoritmo fácil, pero estoy un tanto frio de mente hoy ... y evito tener que evaluar si cada número es mayor de 10, 100, 1.000... etc
A ver amigo, el punto es decimal o de millares

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 11-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
A ver amigo, el punto es decimal o de millares

Salud OS
... no te asustes, pero si es de miles
Responder Con Cita
  #6  
Antiguo 11-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por felipe88 Ver Mensaje
... no te asustes, pero si es de miles
Ahh, pues entonces así

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(inttostr(round(35459*0.0001)*10000));
  ShowMessage(inttostr(round(27684*0.0001)*10000));
end;


Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 11-12-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Ahora

Si son numeros de 2,3,4,5 etc cifras pues algo asi

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  numero: integer;
begin
  Numero := 35459;
  case length(inttostr(numero)) of
     2: ShowMessage(inttostr(round(Numero*0.1)*10));
     3: ShowMessage(inttostr(round(Numero*0.01)*100));
     4: ShowMessage(inttostr(round(Numero*0.001)*1000));
     5: ShowMessage(inttostr(round(Numero*0.0001)*10000));
  end;
end;



Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 11-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
... bueno, este último es válido aunque se extiende demasiado ... pero gracias amigo, me sirve para este momento

Saludos
Responder Con Cita
  #9  
Antiguo 11-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
¿Alguna otra idea?, quiero complicar un tanto la cosa ...
Veámos, para el codigo que me da Eliseo, se mide la distancia de la cifra para determinar segun el case, si está entre 10, 100, 1000...etc

¿Ahora, matemáticamente como podría jugar con esto?.

Saludos
Responder Con Cita
  #10  
Antiguo 11-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Y digo yo... ¿porqué no lo generalizamos?

Algo así:

Código Delphi [-]
function TForm1.Digits(Number: integer): integer;
begin
  result := Length(IntToStr(Number));
end;

function Tform1.RoundUpNumber(Number: integer): integer;
var dig: integer;
begin
  dig := Digits(Number) - 1;
  result := trunc((round(Number * Power(0.1,Dig)) * Power(10,dig)));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(RoundUpNumber(35459)));
end;



Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 11-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Me gusta la idea Delphius ... aunque aún estoy pensando en una fórmula

Saludos
Responder Con Cita
  #12  
Antiguo 11-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por felipe88 Ver Mensaje
Me gusta la idea Delphius ... aunque aún estoy pensando en una fórmula

Saludos
Jajaja... no me digas... a ver... déjame adivinar: Esto lo haces a modo venganza por lo del otro hilo.

Pues esta vez me agarraste cansado, intento hacer ping a mi cerebro pero recibo puro timeouts. En estos momentos está off.

Si encuentras la fórmula avísame

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #13  
Antiguo 11-12-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Jajaja... no me digas... a ver... déjame adivinar: Esto lo haces a modo venganza por lo del otro hilo.

Pues esta vez me agarraste cansado, intento hacer ping a mi cerebro pero recibo puro timeouts. En estos momentos está off.

Si encuentras la fórmula avísame

Saludos,
... relax Delphius... estoy pensando ...

Saludos
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
Cifra histórica...... egostar La Taberna 76 24-11-2008 05:40:06
Redondear Cifra look OOP 2 04-10-2007 20:44:24
convertir una cifra a texto jaderking OOP 5 12-01-2007 10:36:19
Convertir una cifra de tipo real a su cantidad en letras reina Varios 7 11-08-2005 18:16:31


La franja horaria es GMT +2. Ahora son las 14:30:01.


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