Buenas,
Sea el numero que sea, también tienes la opción de convertirlo a string:
Código C:
Ver originalchar numeroEnLetras[ 100 ];
float numero = 3.14159265;
sprintf( numeroEnLetras
, "%f", numero
);
La ventaja de este código es que puedes imprimir sobre un string el numero que quieras con el formato que quieras.
Por cierto, si aceptas una sugerencia, el algoritmo de mhax, se podría optimizar un poco:
Código C:
Ver originalint contarDecimales( float numero ) {
char str[ 100 ];
int i = 1; //El primer caracter no puede ser el punto!!
while( ( str
[ i
] != '.' ) && ( i
< strlen( str
) ) i
++;
return ( strlen( str
) - i
- 1 ); }
Este algoritmo evita que tengas que recorrer hasta el final si no es necesario y, además, te ayuda a tener el numero en formato numérico si luego necesitas hacer cálculos con él (puedes saltarte la parte 'sprintf( str, "%f", numero );' si vas a pedir que te introduzcan un número por teclado como sugería mhax).
Aunque esto te puede traer un problema ya que, al menos en mi caso, '%f' sólo muestra los 5 primeros decimales del número de modo que hay que corregir un poco el algoritmo:
Código C:
Ver originalint contarDecimales( float numero ) {
char str[ 100 ];
int j, i = 1; //El primer caracter no puede ser el punto!!
while( ( str
[ i
] != '.' ) && ( i
< strlen( str
) ) ) i
++;
while( ( j > i ) && ( str[ j ] == '0' ) ) j--;
return ( j - i );
}
La idea es imprimir todos los decimales y pasarle y luego ir descontando los que te has pasado (un 0 a la derecha de la coma es inútil).
Un saludo!