Autor
|
Tema: [Súper solucionado] Separar parte decimal y parte fraccionaria en lenguaje C. (Leído 31,193 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
Hola a todos. Bueno como el enunciado lo dice es lo que quiero hacer, lo que pasa es que la parte fraccionaria no sale limpia como yo deseo, o sea, el programa que expongo a continuación la parte fraccionaria da como resultado 0.345000 y lo que necesito es 345000 a secas sin el cero y el punto, hay alguna manera de lograrlo.-
#include <stdio.h> #include <windows.h> int main(void){ float numero = 12.345; int parte_entera; double parte_decimal; parte_entera = numero/1; parte_decimal = numero-parte_entera; system( "cls" ); printf( "\n La parte entera %d", parte_entera ); printf( "\n La parte decimal %f", parte_decimal ); return 0; }
Desde ya muchas gracia y un abrazo. Daniel
|
|
« Última modificación: 4 Enero 2016, 21:18 pm por NOB2014 »
|
En línea
|
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.-
|
|
|
0xFer
Desconectado
Mensajes: 400
|
Multiplicalo por 1000
|
|
|
En línea
|
int getRandomNumber(){ return 4; //chosen by fair dice roll //guaranteed to be random }
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola 0xFer. Gracias por ocuparte, lo que vos propones daría 12345 y lo que necesito es: entero = 12 fraccion = 345 Ya encontré una manera solo que no descubro cuál es la condición para finalizar el while, no voy a saber si la parte fraccionaria tiene 1,2,3,10 dígitos.-
while( a <= 2){ parte_decimal *=10; a++; }
Saludos. Daniel
|
|
|
En línea
|
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.-
|
|
|
engel lex
|
usa etiquetas GeSHi al publicar código espero se entienda(y funcione) float numero = 12.123; int entero = numero; numero -= entero; while((numero - (int)numero) != 0){ numero *=10; }
|
|
« Última modificación: 4 Enero 2016, 04:41 am por engel lex »
|
En línea
|
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.
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Hazlo a mano, sobre un papel y apunta los pasos que vas haciendo. Después solo tienes que traducirlo a C. Ten en cuenta varias cosas: Que ocurre si el numero original es entero Que ocurre si el tiene infinitos decimales.
Por otra parte, si no es un ejercicio y necesitas esa funcionalidad para un programa mas grande, piensa que ya existe esta función en la librería estándar de C.
|
|
|
En línea
|
|
|
|
kondrag_X1
Desconectado
Mensajes: 157
|
y porque no utilizas %n.mf para decir el numero de decimales que quieres?
por ejemplo printf("%n.mf",numero);
n -> indica la cantidad de números por delante de la coma m -> la cantidad de números por detrás de la coma. así tu número 12,123 printf("parte entera : %4.0f",numero); 12 printf("parte decimal : %0.4f",numero); 123
|
|
|
En línea
|
|
|
|
user-marcos
Desconectado
Mensajes: 159
|
#include<stdio.h> int main() { float f = 12.598; int entero = (int)f; float decimal = f - entero; }
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola. Tengo consultas para los 4, pero no las voy a poner todas juntas, solo que el código de user-marcos me da correcto como debe ser la parte entera pero la parte fraccionaria da como resultado: 0.598000. Lo que necesito es que dé: 598 sin cero a la izquierda ni el punto o sea un número entero.- #include <stdio.h> #include <windows.h> int main(void){ float f = 12.598; int entero = (int)f; float decimal = f - entero;
system( "cls" ); printf("\n parte entera : %d",entero); printf("\n parte decimal : %f",decimal); return 0; } engel lex te dejo el código como yo lo interprete, la lógica es la correcta, pero no sé qué pasa el resultado de la parte fraccionaria no es la esperada:12300015.000000, voy a hacer algunas prácticas para intentar que de el resultado que yo necesito.- #include <stdio.h> #include <windows.h> int main(void){ float numero = 12.123; int entero = numero; numero -= entero; while((numero - (int)numero) != 0){ numero *=10; } system( "cls" ); printf("\n parte entera : %d", entero); printf("\n parte decimal : %f", numero); return 0; } Por el momento es todo, luego les hago la consulta a los otros 2 foristas.- Me es imposible utilizar las etiquetas GeSHi, no sé que pasa.- Saludos. Daniel
|
|
|
En línea
|
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.-
|
|
|
user-marcos
Desconectado
Mensajes: 159
|
Lo que he puesto antes estaba incompleto. #include<stdio.h> #include <math.h> #define NUMERO_DECIMALES 4 int main() { float f = 12.5985; int entero = (int)f; float decimal = f - entero; int i_decimal = decimal * pow(10,NUMERO_DECIMALES ); printf("%i",i_decimal ); // -> 5985 }
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
A ver, ¿qué tal así? #include <stdio.h> #include <math.h> unsigned p_fraccionaria(double d) { unsigned retvalue; d -= (unsigned long)d; d *= 1000000; // <-- 6 decimales ya es bastante precision retvalue = d; if(retvalue < d) // <-- por si en la conversion ha habido ++retvalue; // <-- perdida de precision else if(retvalue > d) // --retvalue; // if(retvalue) // <-- Si no es 0, intentamos while(!(retvalue % 10)) // <-- quitar 0 por la derecha retvalue /= 10; // return retvalue; } int main() { double num; num = 12.34; printf("%f : %u\n", num , p_fraccionaria (num )); num = 12.34567890123; printf("%f : %u\n", num , p_fraccionaria (num )); num = 12.00; printf("%f : %u\n", num , p_fraccionaria (num )); num = 12; printf("%f : %u\n", num , p_fraccionaria (num )); num = -12.34; printf("%f : %u\n", num , p_fraccionaria (num )); return 0; }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
java parte fraccionaria
Java
|
^kazike^
|
1
|
18,529
|
25 Diciembre 2005, 04:34 am
por coolfrog
|
|
|
tengo un problema super peludo con la biblioteca gd 2da parte
PHP
|
memosky
|
4
|
2,472
|
18 Noviembre 2006, 22:25 pm
por memosky
|
|
|
Solucionado en parte mi problema con fit gedo system
Programación Visual Basic
|
makinen00
|
0
|
3,381
|
4 Marzo 2008, 13:21 pm
por makinen00
|
|
|
Ayuda con parte de codigo(solucionado)
Programación Visual Basic
|
pedraosone
|
8
|
3,580
|
20 Julio 2009, 05:32 am
por seba123neo
|
|
|
parte decimal
Programación C/C++
|
mapers
|
6
|
3,542
|
4 Julio 2010, 22:59 pm
por nicolas_cof
|
|