Thread: how to compare decimals in c programming

1. how to compare decimals in c programming

hi i am using unix cygwin compiler, courtesy of NUS.
i know we can use if statements to compare integers but how about decimals(just as they are) ??? Thank you and sorry if this is a petty question.

2. You want to use a float type, otherwise it is the same.

HOWEVER, there is a caveat with comparing floats. Because of the nature of floating point numbers in a computer, they are only exactly equal to decimal values that are an inverse power of two -- 0.5, 0.25, 0.125, 0.0625, and so on. Notice 0.1 is not on the list.

Try this:

Code:
```#include <stdio.h>

int main() {
float i;
for (i=0.0f; i<20; i+=0.1f) {
printf("%f\n",i);
}
return 0;
}```
It does not do what you would think:

[...]
2.500000
2.600000
2.700000
2.799999
2.899999
2.999999
[...]

So much for 0.1! This happens at different points for 32-bit and 64-bit systems.

Because of that, use a range instead of ==:

Code:
```float x;
[...]
if (x >= 10.1999 &&  x <= 10.2001)```
`if (x == 10.2)`