Problem with long double in epsilon machine

109 Views Asked by At

I use this code

#include <iostream>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;


int main(void)
{

long double epsilon = 1;
double epsilond = 1;
float epsilonf = 1;

while (epsilon+1>1)
{
epsilon = epsilon/2;
} 
while (epsilonf + 1 > 1)
{
epsilonf = epsilonf / 2;
}
while (epsilond + 1 > 1)
{
epsilond = epsilond / 2;
}

cout.setf(ios::scientific);

cout << setprecision(20) << "\nElepsilon de la maquina long doble = " << epsilon << "\n\n";
cout << setprecision(20) << "\nElepsilon de la maquina double = " << epsilond << "\n\n";
cout << setprecision(20) << "\nElepsilon de la maquina float = " << epsilonf << "\n\n"; 
}

but my solution is:

Elepsilon de la maquina long doble = 1.11022302462515654042e-16


Elepsilon de la maquina double = 1.11022302462515654042e-16


Elepsilon de la maquina float = 5.96046447753906250000e-08

and double and long double is the same, for some reason im no sure of this. I see other code and the result its diferent some people get 5.xxxxx or 2.xxxx and i dont know why i get stuck in this.

Right now i using C++ in Visual Studio 2019

0

There are 0 best solutions below