[C con Clase] Pregunta sobre con Float
rodolfo rosso paz
rodolforossopaz en hotmail.com
Jue Sep 20 23:21:59 CEST 2007
Hola Cristhian,
La solución que te envió 00z, esta perfecta, solo olvidó colocar que al
final la mantisa la multipliques por 100, pero supongo que fué porque era
obvio que lo supondrías.
Pero el motivo de mi e-mail, es otro, y es que hace un tiempo estaba
tratando de hacer lo que tú,, y me surgió un problema con los decimales de
los numeros flotantes. Según la respuesta que me dió Salvador los
decimales no son tan precisos como se espera. Me hubiera gustado enviarte
su mismo correo, pero a pesar de saber que lo tengo guardado en alguna
parte, no he podido encontrarlo. Sin embargo, te envío este programita que
hice a partir de ese correo, córrelo y podrás comprobar que los decimales no
siempre son lo que se espera de ellos, asi que ten cuidado al manipularlos.
#include <iostream>
using namespace std;
#include <iomanip>
using std::setw;
using std::setprecision;
int main()
{
double arregloDobles[] = {1.1, 2.2, 3.3, 4.4, 5.5};
cout << setprecision(16) << fixed;
cout << " arregloDobles[] Resta doble entero" <<
endl;
for (int i = 0; i<5 ; i++)
{
int resta = i+1;
cout << setw(20) << arregloDobles[i] << setw(6) << resta;
double doble = (arregloDobles[i]-resta)*10;
cout << setw(20) << doble;
int entero = int(doble);
cout << setw(7) << entero << endl;
}
system("PAUSE");
return 0;
}
Como verás, al efectuar la corrida de este programa el número 3.3 se ha
convertido misteriosamente en 3.2999999999999998, y al quitarle el entero
me queda .299999999999998 y no .3 como yo esperaba.
Buehhh, solo quería ponerte sobre aviso, espero te sirva
Rodolfo
>From: CRISTHIAN ANGARITA <thiancriss85 en hotmail.com>
>Reply-To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
>To: C Con CLase <cconclase-bounces en listas.conclase.net>,
>C++<cconclase en listas.conclase.net>
>Subject: [C con Clase] Pregunta sobre con Float
>Date: Wed, 19 Sep 2007 14:35:20 -0500
>
>Buenas tardes a todo,
>
>
>Bueno tengo una pregunta, hay la posibilidad de que en un numero con
>decimales como (1.25) pueda utilizar solo el (25), ose solo manejar los
>decimales y sacar a un lado el entero.
>
>
>
>
>
>
>Cristhian Angarita.
>http://cm85.spaces.live.com/
>http://cm85.spaces.live.com/blog/cns!9AECE6BFD5898DE4!271.entry
>_________________________________________________________________
>Connect to the next generation of MSN Messenger
>http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline
>_______________________________________________
>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
_________________________________________________________________
MSN Amor: busca tu ½ naranja http://latam.msn.com/amor/
Más información sobre la lista de distribución Cconclase