Sicuramente con quel ide farai fatica a far tutto.
quello che voleva dire migliorabile è che un valore quale 2.0 dal compilatore viene interpretato come double, essendo double la variabile di precisione maggiore allora tutto sarà convertito per quel tipo di dato.
Il codice funzionante:
float precisioneSingola()
{
float eps = 1.0f;
while((1.0f + eps) > 1.0f)
eps = eps / 2.0f;
return (2.0f * eps);
}
double precisioneDoppia()
{
double eps = 1.0;
while((1.0 + eps) > 1.0)
eps = eps / 2.0;
return(2.0 * eps);
}
int main()
{
printf("%.64f\n",precisioneSingola());
printf("%.64lf\n",precisioneDoppia());
printf("double:%d float:%d\n",sizeof(double),sizeof(float));
return 0;
}
$ ./iop
0.0000001192092895507812500000000000000000000000000000000000000000
0.0000000000000002220446049250313080847263336181640625000000000000
double:8 float:4