如何将十进制数转换为64位二进制浮点数?

时间:2010-02-14 14:27:24

标签: c++

我需要将十进制数转换为64位二进制浮点值。 如果您知道任何算法或任何相关内容,请提供帮助。

4 个答案:

答案 0 :(得分:3)

使用boost::lexical_cast

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;