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

Pedro Mateo pedromateoa en gmail.com
Mie Mar 14 02:27:00 CET 2007


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?


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