我尝试了以下操作:
std::cout << std::hex << 17.0625;
但是它以十进制形式输出。我想看到11.01(十六进制为17.0625)。我应该如何以十六进制打印浮点数值?
请勿提供以下解决方案:
void outhexdigits(std::ostream& out, fp_t d, int max_chars=160)
{
while(d > 0. && max_chars)
{
while(d < 1. && max_chars){
out << '0';
--max_chars;
d*=16;
}
if (d>=1. && max_chars) {
int i = 0;
while (d>=1.)
++i, --d;
out << std::hex << i;
--max_chars;
}
}
}
在STL/boost中有没有一种将浮点数以十六进制形式转储的方法?
double
类型的内存布局的十六进制表示,还是想要以十六进制打印可读的浮点数值? - Matteo Italiastd::hexfloat
。 - BoBTFishreinterpret_cast<int*>(&f);
然而,这只是未定义行为,因为存在别名规则。 - BoBTFish