我需要将十进制数转换为64位二进制浮点值。 如果您知道任何算法或任何相关内容,请提供帮助。
答案 0 :(得分:3)
double num = lexical_cast<double>(decimal);
答案 1 :(得分:0)
假设您的意思是存储在字符串中的小数,atof将是将其转换为double
值(x86架构上的64位浮点数)的标准解决方案。
std::string s = "0.4";
double convertedValue = atof(s.c_str());
或类似的C字符串:
const char *s = "0.4";
double convertedValue = atof(s);
但如果你的意思是“十进制数”的整数,那就写一下
int yourNumber = 100;
double convertedValue = yourNumber;
,该值将自动转换。
答案 2 :(得分:0)
从字符串到double的值转换可以通过boost :: lexical_cast实现。 从int到double的类型转换是C ++的一部分:
double d = (double)i;
之前的回复中已经提到过。
如果您有兴趣知道如何实现此转换,您可以参考编译器正在使用的C标准库的源代码,因为提供了源代码并且没有使用浮点协处理器来实现此目的。如果没有可用的浮点协处理器,许多嵌入式目标编译器会“手动”完成这项工作。
有关二进制格式说明,请参阅Victor的回复
答案 3 :(得分:-2)
Decimal decimalNumber = 1234;
Float binaryFloatValue = decimalNumber;