如何在C ++中将十进制转换为IEEE 754半精度格式?

时间:2019-08-06 06:23:49

标签: c++ floating-point floating-point-conversion

我目前正在尝试将十进制值转换为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位格式。

编辑:不是重复的,因为这与精度错误无关。

1 个答案:

答案 0 :(得分:1)

在c ++中,没有用于半精度(16位)浮点的内置类型。 您必须自己计算值。