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.734
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.278
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.734
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.278
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
  #9  
Antiguo 10-10-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Neftali Ver Mensaje
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...

Más claro... no se puede
Responder Con Cita
  #10  
Antiguo 10-10-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Que bonitos los logaritmos, hubo una época (que yo no viví ) en la que no había calculadoras, y se utilizaban sus propiedades para hacer cálculos complejos. Supongo que aeff, si tiene la edad que aparece en su perfil, no ha visto todavía lo bonitas y lo horribles que pueden ser las matemáticas. Yo era de los que disfrutaba con logaritmos, senos, cosenos, derivadas e integrales, las matemáticas resultaban fascinantes . Luego llegue a primero de carrera y me tope con Álgebra y Calculo, y ahí se me quitaron todas las ganas de seguir con las matemáticas (bueno, después de eso tuve tiempo para un poco de trigonometría esférica, lastima que ya no me acuerde de casi nada )

En resumen, que bonitas las matemáticas y que bonitos los logaritmos
Responder Con Cita
  #11  
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
verdaderamente me han decho que las matemáticas se ponen hiper-feas y a la vez hiper-bonitas, pero aun así con esa "discrepancia de opiniones" me gustaría seguir estudiandola, entendí lo que me quizo decir [Neftali], pero lo que quize preguntar fue que como doy solución a los algoritmos en base 10, por ejemplo:

log 52 = ???
10

¿me hago entender?

muchas gracias colegas

saludos

aeff!!

Última edición por aeff fecha: 10-10-2007 a las 17:54:31.
Responder Con Cita
  #12  
Antiguo 10-10-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por aeff Ver Mensaje
... pero lo que quize preguntar fue que como doy solución a los algoritmos en base 10
Tienes 2 opciones, sin la unidad math solo cuentas con la función ln, es decir el logaritmo en base e. Pero aplicando propiedades de los logaritmos:
Código Delphi [-]
function log(X: Extended): Extended;
begin
  Result:= ln(X)/ln(10);
end;

Sin embargo si añades la unidad math, ya puedes usar la función log10 para calcular el logaritmo base 10.
Responder Con Cita
  #13  
Antiguo 10-10-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por seoane Ver Mensaje
Tienes 2 opciones, sin la unidad math solo cuentas con la función ln, es decir el logaritmo en base e. Pero aplicando propiedades de los logaritmos:
Código Delphi [-]function log(X: Extended): Extended;
begin Result:= ln(X)/ln(10); end;


Sin embargo si añades la unidad math, ya puedes usar la función log10 para calcular el logaritmo base 10.
seoane, eres como el sombrero de un mago, sacas trucos sin parar
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 00:23:45.


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