Hi,
I have a problem withe the float type: I used the program :
#include <stdio.h>
#include <math.h>
#include <float.h>
void main ()
{
float eps,lead_eps,val1;
eps = 1.0f;
lead_eps = 0.0f;
val1 = 0.0f;
printf("val1 != 1.0? \n");
while( val1 != 1.0f )
{
printf("yes: val1=%.17f...........lead_eps=%.17f.....eps=%.17f\n",val1, lead_eps,eps);
eps/=2.0f;
lead_eps = eps/2.0f;
val1 = (1.0f + lead_eps);
}
printf("\nno : val1=%.17f...........lead_eps=%.17f.....eps=%.17f\n",val1,lead_eps,eps);
printf("one plus eps: %.17f\none plus lead_eps=%.17f",1.0f+eps,1.0f+lead_eps);
printf("\n\neps=%.17f",eps);
}
The simulation result:
val1 != 1.0?
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
yes: val1=17f...........lead_eps=17f.....eps=17f
no : val1=17f...........lead_eps=17f.....eps=17f
one plus eps: 17f
one plus lead_eps=17f
eps=17f
How Can I get the real result of float variables?