C++ 为什么MSVC++;是否需要std::setprecision以使用std::hexfloat启用全精度输出?

C++ 为什么MSVC++;是否需要std::setprecision以使用std::hexfloat启用全精度输出?,c++,visual-c++,C++,Visual C++,据我所知,以下行是将十六进制双精度输出到全精度所需的全部内容: std::cout << std::hexfloat << yourDouble << std::endl; 输出为: 0x1.567be0p+7 0x1.567be0370cdc8p+7 自从我上次尝试使用GCC以来已经有一段时间了,但如果我没记错的话,它在不需要setprecision的情况下生成了完整的双精度输出。有人能确认这是否是MSVC++特有的行为,以及原因吗?因为hexfloat

据我所知,以下行是将十六进制双精度输出到全精度所需的全部内容:

std::cout << std::hexfloat << yourDouble << std::endl;
输出为:

0x1.567be0p+7
0x1.567be0370cdc8p+7

自从我上次尝试使用GCC以来已经有一段时间了,但如果我没记错的话,它在不需要setprecision的情况下生成了完整的双精度输出。有人能确认这是否是MSVC++特有的行为,以及原因吗?

因为
hexfloat
输出应该是并输出完整的值,这将是一个编译器错误

1045644800006
0x1.567be0370cdc8p+7
C6CCFEDA2563B0D1
5E3492440B4BE8B2
0x1.567be0p+7
0x1.567be0370cdc8p+7