[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