Hola a todos.
0xFer, mil disculpas por no prestar demasiada atención a lo que proponías en este post:http://foro.elhacker.net/programacion_cc/super_solucionado_separar_parte_decimal_y_parte_fraccionaria_en_lenguaje_c-t446426.0.html si bien es efectivo cuando la variable se inicializa a mano no sirve cuando la misma se le aplica el valor por teclado, no sirve porque aparentemente no se puede establecer cuantos decimales tiene un tipo de coma flotante, pero como Danielito es un tanto obsesivo sigue intentando.-
Lo que traigo ahora es la siguiente formula que en un papel y con la calculadora funciona, pero en el ordenador da resultado erróneo, yo quiero creer en una frase que me dijo un conocido (mío) exprogramador: Todo lo que puedas hacer con un lápiz y un papel yo lo puedo hacer con el ordenador.-
Un Ej. con el número .2155
.2155 * 10 = 2.155 le restamos la parte entera y nos queda .155 (1 decimal)
.155 * 10 = 1.55 le restamos la parte entera y nos queda .55 (2 decimales)
.55 * 10 = 5.5 le restamos la parte entera y nos queda .5 (3 decimales)
.5 * 10 = 5.0 le restamos la parte entera y nos queda cero (4 decimales)
El resultado es infalible, en el papel, pero en el programa que dejo a continuación no.-
#include <stdio.h>
#include <float.h>
int main( void ){
double numero , decimal;
int entero, contador = 0, ok, ch;
do{
printf("\n Ingrese un numero con decimales...: "); ok
= scanf( "%lf", &numero
) == 1 && numero
> 0.00 && numero
<= DBL_MAX
; while ((ch
= getchar()) != EOF
&& ch
!= '\n'); }while(!ok);
entero = (int)numero;
decimal = numero - entero;
while(decimal != 0 ){
decimal = decimal * 10;
decimal = decimal - (int)decimal;
printf("\n Decimal...: %g", decimal
); contador ++;
}
printf("\n Total de digitos despues de la coma..:%d\n", contador
);
return 0;
}
Si todavía alguien desea decirme el porqué, muy pero muy agradecido.-
Saludos.