#include <stdio.h>
#include <float.h>
int main()
{
printf("%f\n", FLT_MAX);
}
GNU的输出:
340282346638528859811704183484516925440.000000
Visual Studio的输出:
340282346638528860000000000000000000000.000000
C和C++标准是否允许这两种结果?还是他们要求特定的结果?
请注意
FLT_MAX = 2^128-2^104 = 340282346638528859811704183484516925440
。 最佳答案
我认为C99标准的相关部分是7.19.6.1 p.13中的“推荐做法”:
我的印象是,在这种情况下,这可能会留出一些余地。所以我的结论是VS和GCC都在这里符合要求。
关于c++ - 打印非常大的浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10970531/