[C con Clase] problemas obteniendo la parte decimal de un numero double

"Antonio Sebastián Sallés M." asalles.mail en gmail.com
Mie Mar 14 03:04:33 CET 2007


Ocupa FLUtil.h y FLUtil.cpp llamando por parámetro a
partDecimal(double n)

http://www.koders.com/cpp/fid043E0803097365816CCE05E27BA83FAE5679D22F.aspx?s=partDecimal
http://www.koders.com/cpp/fid86A1C63CE11F57AB70CCAA9467FB3E99AB04AB7D.aspx?s=partDecimal

Aprende a usar librerías, no reinventes la rueda.



Saludos

Antonio Sebastián Sallés M.
UCENTUX / IEEE UCENTRAL
[cel] (56-8) 281 71 61
[lab] (56-2) 582 69 31
Martes, 13 de Marzo de 2007, 22:04:17 hrs.
http://eiec.ucentral.cl/ucentux/





Pedro Mateo escribió:
> soy nuevo en c++ y vengo de programar en visual foxpro por mas de 10 anos y no existe otra actividad (NINGUNA!!) que me guste por lo menos un poquito de lo que me gusta programar
> 
> ahora tengo un OBSESION de programar en c++ y no me puedo librar de eso, es un reto para mi
> 
> quiero obtener la parte decimal de un double pero al intentarlo me han ocurrido algunas cosas que me despiertan varias interrogantes
> 
> este programita deberia inprimir 234 en cambio se queda en un loop infinito
> a menos que cambies el 23.234 por 23.2 que en tal caso me devolve 2
> 
> puedo entender que en el comportamiento de este programa sea diferente cuando los numeros son grandes, pero los numeros que estoy utilizando para probar no son la gran cosa
> 
> por otro lado esta el hecho de que los calculos que hasta ahora he realizado solo me devuelven 6 decimales lo que es inapropiado para determinadas ocaciones en las que se necesita mas presicion
> 
> se que existen funciones que me pueden ayudar a resolver ese problema, pero estoy en c++ porque deseo aprender como funcionan las cosas, en otros lenguajes de muchisima menor potencia puedo hacer operaciones como esta sin necesidad de utilizar funciones
> 
> y se que el dominio de la solucion a este tipo de problemas es vital para mi desarrollo en c++
> 
> 
> #include <iostream>
> using namespace std;
> 
> main(){
> 	double x=23.234;
> 	int c=int(x);
> 	
> 	while(x-int(x)) {x*=10;c*=10;}
> 	cout<<x-c<<endl;	
> }
> 
> en este programa x-int(x) en todos los casos deberia llegar un punto en que sea igual a 0 pero tal no es el caso, si cambias el valor de x obtendras resultados solo si el numero tiene un decimal de menos de 3 posiciones
> 
> 
> alguien podria darme la razon?
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> 




Más información sobre la lista de distribución Cconclase