打印非常大的浮点数

打印非常大的浮点数

#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/

10-11 20:55