0

me gustaría hacer una pregunta que seguramente sea de muy novato, pero creo que es rápida. Escribo un código que declara y asigna un valor a una variable X double. Luego utilizo cout.precision() para ver todos los decimales de X cuando se muestre en pantalla.

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double X = 15.1154154;
    cout.precision(9);
    cout << X << "\n\n\n\n";
    
    system("pause");
    return 0;
}

Entonces compilo, ejecuto y parece que todo ha ido como esperaba, el resultado en la terminal es:

15.1154154



Presione una tecla para continuar . . .

Sin embargo, si subo la precision a un numero muy alto, como por ejemplo 30, de esta manera:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double X = 15.1154154;
    cout.precision(30);
    cout << X << "\n\n\n\n";
    
    system("pause");
    return 0;
}

El resultado en la terminal es:

15.1154153999999998347902874229



Presione una tecla para continuar . . .

Aparecen decimales nuevos que yo no he introducido en la variable en ningun momento. ¿Por qué ocurre esto? ¿No debería imprimirse en la terminal simplemente 15.1154154000000000000000000000 al forzar que aparezcan 30 dígitos? Por favor que alguien me lo explique. Utilizo VScode como editor de codigo y g++ como compilador en windows. Aunque diría que es irrelevante porque en los compiladores online sucede lo mismo. Muchísimas Gracias.

Javuba
  • 1

0 Answers0