Gente, soy nuevo en esto y estoy probando con el comando atof para convertir
cadena tipo C a
doubleEl tema que que tengo es que hace cosas distintas según como cargue la cadena (mete basura)
En el siguiente programa aplico atof a tres cadenas distintas: numero1, numero2, y numero3. Finalmente imprime en pantalla los numeros cargados mas otros inesperados. Ademas hago una resta para verificar si aunque sea la variable la convierte bien, y lo logra.
La pregunta es ¿Porque imprime basura? ¿Que hago mal? Lo corri con dos compiladores distintos y ocurre lo mismo
(En este programa se que meto librerias que no van...pero no importa)
Saludos!
Maxi
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <string>
#include <iomanip>
int main()
{
using namespace std;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
double numero_salida = 0;
// PRIMER NUMERO
char numero1[] = "123.45678900000000000000";
numero_salida = atof(numero1); // Convierto char a double
cout << endl;
cout << "El numero 1 convertido es:" << endl;
cout << "--------------------------" << endl;
cout << setprecision(20) << numero_salida << endl;
// con lo que sigue se muestra que por mas que aparezca basura la variable esta bien cargada
cout << " " << setprecision(20) << numero_salida - 123.456789 << endl;;
cout << endl;
cout << endl;
// SEGUNDO NUMERO
char numero2[] = "12.45678900000000000000";
numero_salida = atof(numero2);
cout << endl;
cout << "El numero 2 convertido es:" << endl;
cout << "--------------------------" << endl;
cout << setprecision(20) << numero_salida << endl;
// con lo que sigue se muestra que por mas que aparezca basura la variable esta bien cargada
cout << " " << setprecision(20) << numero_salida - 12.456789 << endl;;
cout << endl;
cout << endl;
// TERCER NUMERO
char numero3[] = "1.45678900000000000000";
numero_salida = atof(numero3);
cout << endl;
cout << "El numero 3 convertido es:" << endl;
cout << "--------------------------" << endl;
cout << setprecision(20) << numero_salida << endl;
// con lo que sigue se muestra que por mas que aparezca basura la variable esta bien cargada
cout << setprecision(20) << numero_salida - 1.456789;
cout << endl;
cout << endl;
return (0);
}