Problema sencillo de una salida tipo Float en C++

Iniciado por ThronerAXE, 20 Diciembre 2013, 00:39 AM

0 Miembros y 1 Visitante están viendo este tema.

ThronerAXE

este programita sencillito, por ejemplo en si yo le ingresara una sifra mayor a 7 digitos(ej: 1234567) el programa da como salida 1.23457e+06 y si lo cambio a tipo double sucede lo mismo. ¿ que puedo hacer en esos casos ?

Código (cpp) [Seleccionar]
#include <iostream.h>
int main()
{      double x;
       cout<<"Ingrese el valor de X: ";
       cin>>x;
       cout<<endl<<"usted ingreso "<<x<<endl;
       system("pause");
        return 0;
}

leosansan

#1
La salida es la clásica notación científica para un double de ese tamaño, sólo hasta seis cifras un float o double salen como entero y para mayores cifras usa la mencionada notación científica. Si lo cambias como INT te saldrá 1234567.

Saluditos! ..... !!!!        


ThronerAXE

osea que no se pueden ingresar cifras muy altas ? porque si por ejemplo, lo cambiara a tipo int o long y le ingreso un numero de 10 cifras sale un resultado loco

leosansan

Cita de: ThronerAXE en 20 Diciembre 2013, 01:48 AM
osea que no se pueden ingresar cifras muy altas ? porque si por ejemplo, lo cambiara a tipo int o long y le ingreso un numero de 10 cifras sale un resultado loco

Sí se pueden ingresar cifras muy altas, pero en formato float o double con la consiguiente notación exponencial. Otra cosa es la limitación de los enteros.

En mi máquina el entero máximo es  2147483647. Lo puedes consultar en la librería climits.

De todas formas en C se puede controlar el número de cifras significativas y decimales, pero no sé como sería en C++.


Saluditos! ..... !!!!       

rir3760

Cita de: ThronerAXE en 20 Diciembre 2013, 00:39 AMeste programita sencillito, por ejemplo en si yo le ingresara una sifra mayor a 7 digitos(ej: 1234567) el programa da como salida 1.23457e+06 y si lo cambio a tipo double sucede lo mismo. ¿ que puedo hacer en esos casos ?
No veo el problema ya que el numero almacenado es el correcto. Tema aparte es el formato de impresión, en C++ utilizas los manipuladores fixed y scientific para ese propósito.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language