#include <stdio.h>

#define _DF float
#define _FMT "%d %25.22f\n"
#define _ONE 1.0f
#define _HALF 0.5f

int main(int ac, char **av)
{
_DF x = _ONE;
_DF a = _ONE;
int i;
for(i = 0; (_DF)(x + a) > (_DF)_ONE; i++){
printf(_FMT, i, a);
a *= (_DF)_HALF;
}
}

_DFをfloatにしてもdoubleにしても結果が同じです
なぜでしょうか?