5

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

printf("%" PRIx64, *reinterpret_cast<uint64_t *>(&my_double));

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

4

3 回答 3

4

如果您可以使用 C++11 ,请查看std::hexfloat

示例

double k = 3.14;
std::cout<< std::hexfloat << k << std::endl;

打印:0x1.91eb85p+1

于 2013-10-16T09:00:05.393 回答
3

你可以用这个

    #include <iomanip> //Include this file
    cout<<hex<<*reinterpret_cast<unsigned __int64 *>(&r);
于 2013-10-16T09:07:36.400 回答
-2

您可以使用std::cout以下命令以十六进制打印:

std::cout << std::hex << num
于 2013-10-16T08:52:58.557 回答