次のコードは、奇妙な結果をもたらします。
#include <stdio.h>
#include <float.h>
int main()
{
float t = 1.0;
float res;
float myFltMax = 340282346638528859.0;
printf("FLT_MAX %f\n", FLT_MAX);
res = FLT_MAX - t;
printf("res %f\n", res);
res = myFltMax - t;
printf("res myFltMax %f\n", res);
return 1;
}
結果は次のとおりです。
FLT_MAX 340282346638528859811704183484516925440.000000
res 340282346638528859811704183484516925440.000000
res myFltMax 340282356122255360.000000
したがって、FLT_MAX から 1 を減算すると結果は同じになり、他の大きな float から 1 を減算すると、結果は初期値よりも大きくなります。
gcc バージョン 4.7.2 を使用しています。ありがとうございました。