C++:以十六进制打印双精度表示

ncc*_*ccc 5 c++ cout

有没有一种简单的方法来操作 std::cout 以便它以十六进制表示形式打印双打?换句话说,相当于:

printf("%" PRIx64, *reinterpret_cast<uint64_t *>(&my_double));
Run Code Online (Sandbox Code Playgroud)

为了提供一些上下文,我有一个程序可以打印数百个浮点结果,我想知道是否有一种神奇的单行 hack 可以以十六进制打印所有这些结果。

use*_*963 6

如果你可以使用 C++11,请看一下std::hexfloat

例子

double k = 3.14;
std::cout<< std::hexfloat << k << std::endl;
Run Code Online (Sandbox Code Playgroud)

打印:0x1.91eb85p+1

  • 有趣的是,gcc/clang/icc 没有 hexfloat,但 MSVC 有 (2认同)