【发布时间】:2014-10-17 01:10:05
【问题描述】:
我正在尝试编写将实数转换为 64 位浮点二进制的代码。为此,用户输入一个实数(例如,547.4242),程序必须输出一个 64 位浮点二进制。
我的想法:
- 标志部分很简单。
- 程序转换整数部分(上例为 547)并将结果存储在一个 int 变量中。然后,程序转换小数部分(上例为.4242)并将结果存储到数组中(数组的每个位置存储“1”或“0”)。
这就是我卡住的地方。总而言之,我有:“整数部分 = 1000100011”(int 类型)和“小数部分 = 0110110010011000010111110000011011110110100101000100”(数组)。
我该如何继续?
【问题讨论】:
-
你说你将它存储为双精度,但它看起来像二进制......不确定你到底在问什么
-
双 x = (双) y; ?
-
@Noctis 对不起,我的意思是一个 int 变量。
-
这很容易得到几乎正确的结果,但如果我没记错的话,要获得绝对正确的转换需要做很多工作。
-
一个典型的 64 位浮点二进制可能具有类似“100...(300 个零)00.0”的值。将该实数的整数部分转换为
int、long、long long等肯定会导致截断。 “实数的整数部分”->int您的想法提出的方法远没有限制。建议 1)另一种方法 2)并发布您的代码。
标签: c floating-point binary converter fractions