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 09-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
Obtener la cantidad de cifras de un numero

Hola, quisiera saber si existia algún método matematico para calcular la cantidad de cifras que tiene un número dado, sin tener que convertir este numero a string y con la funcion Length saber esto, asi se hacer muy facil en Delphi pero lo que quiero como habia dicho es un algoritmo/calculo matematico para saber cuantas cifras tiene un número,

muchas gracias de antemano,
saludos

aeff!!
Responder Con Cita
  #2  
Antiguo 09-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
No es una función matemática, pero yo haría algo así :
Código:
n = 1
while n*10 > numero 
   n = n + 1;
numero es el que quieres ver cuantos digitos tiene
n es la cantidad de digitos que tiene

Supongo que con los logaritmos en base 10 también se puede hacer algo, pero de mis clases de matemáticas ya no me acuerdo;

Última edición por duilioisola fecha: 09-10-2007 a las 18:53:44.
Responder Con Cita
  #3  
Antiguo 09-10-2007
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Una forma sencilla de implementar seria:

Código Delphi [-]
function cifras(n:integer):integer;
begin
  Result:= 0;
  repeat
    n:= n div 10;
    Inc(Result);
  until n=0;
end;

Saludos
Responder Con Cita
  #4  
Antiguo 09-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
bueno, muchas gracias por sus respuestas colegas, realmente no tenia ni idea de como hacer esto que ustedes me han enseñado a hacer matemáticamente,

muchas gracias, muchas garcias,

saludos,
aeff!!
Responder Con Cita
  #5  
Antiguo 10-10-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que debes aplicar el Logaritmo (en base 10) al número del que deseas saber las cifras.

Log(1)=>0
Log(9)=>0,95...
Log(10)=>1
Log(11)=>1,04...
Log(99)=>1,99...
Log(100)=>2
...
Log(999999)=>5,999....
Log(1000000)=>6
...

Código Delphi [-]
  // En Y tendrás el  numero de cifras de X
  y := Trunc(Log10(x)) + 1;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 10-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Genial Neftali!!!

Este es un verdadero método METEMATICO de hacerlo.

Sabía que los logaritmos tenían algo que ver con esto.
Responder Con Cita
  #7  
Antiguo 10-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
saludos, muchars gracias [Neftali], está super-bueno ese método, no pensé que con logaritmos se podía determinar la cantidad de cifras de un número, pero esto de logaritmos no lo entiendo muy bien, ¿alguien me puede dar una explicación de los logaritmos en base 10?

muchas gracias,

saludos
aeff!!
Responder Con Cita
  #8  
Antiguo 10-10-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por aeff Ver Mensaje
¿alguien me puede dar una explicación de los logaritmos en base 10?
Básicamente el logaritmo es el método inverso de la potencia. El logaritmo en base 10 es, por tanto, el inverso de la potencia (con 10).

10^1=10 (2 cifras)
10^2=10*10=100 (3 cifras)
10^3=10+10+10=1000 (4 cifras)
10^4=14*10*10*14=10000
...
10^23434=.....= Aunque no lo calcules puedes asegurar que tendrá 23435 cifras.

No es casualidad que cada potencia añada una nueva cifra, es que el sistema decimal está basado en "base 10", igual que el octal es en "base 8" o el binario en "base 2".

De la misma forma podrías obtener las cifras para determinado número en binario, sempre que aplicaras en ese caso el logaritmo en base 2.

No se si te he aclarado algo...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
generar numero de 9 cifras aleatorio que nunca se repita coletaun Varios 9 19-02-2007 10:34:29
Obtener cantidad de Dias en determ Mes Por fa kamux1 Varios 3 18-01-2007 22:38:45
Cómo obtener cantidad de visitas a una página web EveElgrande Internet 5 27-07-2006 14:57:22
De un número, obtener el ASCII Alexander Varios 2 26-05-2005 17:21:32
obtener el numero de linea. maruenda Varios 1 30-10-2004 05:11:05


La franja horaria es GMT +2. Ahora son las 13:28:35.


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