У меня есть этот код:Как преобразовать double в 64bit ieee754?
std::string GetBinary32(double value)
{
union
{
float input; // assumes sizeof(float) == sizeof(int)
int output;
} data;
data.input = value;
std::bitset<sizeof(float) * CHAR_BIT> bits(data.output);
std::string mystring = bits.to_string<char, std::char_traits<char>, std::allocator<char> >();
return mystring;
}
Я хочу, чтобы получить 64 представление двойной.
Что мне нужно изменить?
Вместо угадывания с помощью 'int' используйте' uint32_t'. Затем объедините 'double' с' uint64_t', чтобы получить 64-битную версию. В целом это не очень хорошая идея. Он блуждает в неопределенное поведение, так как вы одновременно используете разных членов союза. C++ не дает никаких гарантий, что это будет работать так, как ожидалось, или же во всех реализациях. Было бы безопаснее отказаться от объединения и 'memcpy'' input' для 'output'. – user4581301