C/Visual C - Longitud

 
Vista:

Longitud

Publicado por Kevin (2 intervenciones) el 15/04/2003 00:48:11
Hey...

Por favor, alguien me podría decir que función cuenta la catidad de digitos de un número y además, que función permite calcular la parte decimal de un número.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Longitud

Publicado por chuidiang (677 intervenciones) el 15/04/2003 08:17:52
La parte decimal es fácil.

float numero
float decimales

decimales = numero - (int)numero;

Lo del número de digitos es más complejo. Tienes que echar una cuenta con logaritmos. Tienes que usar el logaritmo en base 10 (búscalo en el compilador que utilices y sería algo así como)

numeroDigitos = (int)(log (fabs(numero))+1);

Si numero es 10, el log() vale 1 y al sumarle 1 salen 2 cifras.
Si numero es100, el log() vale 2 y al sumarle 1 salen 3 cifras.
Si el numero está entre 10 y 100, el log() vale 1 y pico. Al sumarle 1 y sacar la parte entera saldrá 2.
etc, etc.

Para números negativos habría que quitar el signo, por eso lo del fabs().

Ojo con número del estilo 0.01, que sale log() igual a -2 y no funcionará bien. No vale esta cuenta para números menores que 1.

Otra opción más chapucera es meter el número en una cadena con sscanf(cadena, "%f", numero) y luego ver la longitud de cadena. Eso sí, tienes que descontar un caracter de signo (si lo hay), uno para el punto decimal, etc, etc.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar