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

时间:2013-10-16 08:50:15

标签: c++ cout

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

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

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

3 个答案:

答案 0 :(得分:3)

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

示例

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

打印: 0x1.91eb85p + 1

答案 1 :(得分:3)

您可以使用此

    #include <iomanip> //Include this file
    cout<<hex<<*reinterpret_cast<unsigned __int64 *>(&r);

答案 2 :(得分:-2)

您可以{:1}}以十六进制打印:

std::cout