我目前正在尝试将十进制值转换为IEEE 754 Half Precision Floating Point格式,但是转换时遇到了一些问题。当前,此代码仅适用于转换为单精度格式。
如果我没记错,它将默认将十进制值转换为Single Precision格式。否则,代码的哪一行正在执行此操作?
否则,还有其他方法可以解决我的问题吗?
/vendor/bin/run.sh u:object_r:gea3appservice_exec:s0
以上代码的输出将为#include <limits.h>
#include <iostream>
#include <math.h>
#include <bitset>
// Get 32-bit IEEE 754 format of the decimal value
std::string GetBinary32( float 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;
}
int main()
{
// Convert 19.5 into IEEE 754 binary format..
std::string str = GetBinary32( (float) 19.5 );
std::cout << "Binary equivalent of 19.5:" << std::endl;
std::cout << str << std::endl << std::endl;
return 0;
}
但是,我想将其转换为16位格式。
编辑:不是重复的,因为这与精度错误无关。
答案 0 :(得分:1)
在c ++中,没有用于半精度(16位)浮点的内置类型。 您必须自己计算值。