I am puzzled. I have no explanation to why this test passes when using the double
data type but fails when using the float
data type. Consider the foll
Try this:
#include
int main(){
float total = 0.00;
int i;
for (i = 0; i < 100; i++)
total += 0.01;
printf("%f\n", total);
if (total == 1.0)
puts("Precise");
else
puts("Rounded");
}
At least on most machines, you'll get an output of "Rounded". In other words, the result simply happens to be close enough that when it's printed out, it's rounded so it looks like exactly 1.00, but it really isn't. Change total
to a double
, and you'll still get the same.