以下代码给出了一些奇怪的结果:
#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,结果是相同的,如果我从其他大浮点数中减去 1,则结果大于初始数字。
我正在使用 gcc 版本 4.7.2。谢谢你。