Comparing floating point numbers
Floating point math is not exact. Simple values like 0.2 cannot be precisely represented using binary floating point numbers, and the limited precision of floating point numbers means that slight changes in the order of operations can change the result. Different compilers and CPU architectures store temporary results at different precisions, so results will differ depending on the details of your environment. If you do a calculation and then compare the results against some expected value it is highly unlikely that you will get exactly the result you intended.
Try this way:
#include<stdio.h>
int main()
{
float a=0.3;
float acceptedDiff = 0.0000001;
if(fabsf(a-0.3) < acceptedDiff)
printf("Hello World!");
else
printf("Stack Overflow");
return 0;
}