[Súper solucionado] Separar parte decimal y parte fraccionaria en lenguaje C.

Iniciado por NOB2014, 4 Enero 2016, 02:10 AM

0 Miembros y 1 Visitante están viendo este tema.

Noob_boy

#10
yo lo que haría seria hacer el logaritmo en base 10 en entero del numero con sus decimales y así obtendría la parte entera, luego se la restas al numero original y obtienes la parte fraccionaria.

mira yo lo utilice para obtener el reverso de un numero
int reverso(int num){
int reverso=0,exp=log10(num);
while(num>0){
reverso = reverso + (num%10)*pow(10,exp);
exp--;
num=num/10;
}
return reverso;


edito:

He probado ha hacerlo y he visto una manera más simple de hacerlo

#include <stdio.h>

int main(){
float num=44.5;
int entera=num;
float fracionaria=num-entera;
}
   

creo que era eso lo que se buscaba

NOB2014

Hola, gente.
MAFUS, gracias por ocuparte, el ejemplo de user-marcos funciona a la perfección y es en parte lo que proponías, en cuanto a hacerlo en un papel ya lo hice y lo quiero aplicar al código de engel lex pero todavía no lo logro.
CitarQué ocurre si el número original es entero,
ya lo probé y da como parte fraccionaria:cero(correcto)
CitarQue ocurre si tiene infinitos decimales
me parece que esto se soluciona con: #define NUMERO_DECIMALES 4.-
Por último, decirte que voy a probar el código que posteaste se lo ve interesante.- 
Noob_boy, me gustaría que postearas algún ejemplo de lo que propones, te imaginaras que con 63 años ya no me acuerdo de logaritmo, desde ya muchas gracias.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

geeke

Tambien dispones de modf incluida en math.h la cual hace justo lo que buscas:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <math.h>

int main(void)
{
    double num = 32.125, fract, entero;

    fract = modf(num, &entero);
    printf ("Entera: %g\nDecimal: %g\n", entero, fract);

    return 0;
}


Saludos

engel lex

llegué tarde XD pero venia a decir que tal vez mi código falla por cosas de la precisión de la variable flotante
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

NOB2014

Hola.

#include<stdio.h>

int main( void ){
double numero = 12.09;
int entero = numero, x = 1;
double decimal = numero - entero;

printf("\n %g\n", decimal);

while(x <= 2 ){
decimal  *=10;
x++;
}

printf("\n La parte fraccionaria..:%g\n", decimal);

return 0;
}


Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-