2012-12-26 30 views
1

可能重复:
How do I convert from a decimal number to IEEE 754 single-precision floating-point format?如何计算的21.36二进制数与误差小于(0.01)

如何计算的21.36二进制数少于一个错误(0.01 )

我已经转换21到二进制10101和36到二进制100100,但现在我将如何继续,请帮助一些。

+2

投票重新开放,因为IEEE 754格式完全不是这个问题的答案。 – Guffa

+0

提供的可疑重复链接与我的问题无关。如果一个人有同样的问题,我已经发布在这里,并参观该参考链接,他将无法从那里得到任何指导或帮助,所以我请求现场提出这个问题。 已投票结束的会员,请解释我将如何从您提到的重复链接中获得我的答案并解释过程。 – John

+1

这个问题特别要求一些东西(意思是'分数二进制'),它可以作为对IEEE754问题的答案的一部分来回答,但是现在还没有。我也觉得在没有尾数,隐藏位,反常规等复杂情况下回答这个问题是有道理的...... – greggo

回答

1

小数部分不应该转换为数字本身,而应该作为分数转换。将36转换为二进制不同于将0.36转换为二进制。

将分数转换为二进制的工作原理相同,但不是使用1,2,4,8等,而是使用1/2,1/4,1/8等。

为了表示0.36:

0 times 1/2 (0.5) 
1 times 1/4 (0.25), leaves 0.11 
0 times 1/8 (0.125) 
1 times 1/16 (0.0625), leaves 0.0475 
1 times 1/32 (0.03125), leaves 0.01625 
1 times 1/64 (0.015625), leaves 0.000625 

这需要你低于0.01,所以一些足够接近21.36的完整bianry表示为:

10101.010111 

十进制这个数字的确切值是21.359375。

+0

在这种情况下停止在1/64工作,但不是一般情况。如果对于某些x来说,从正在进行的残差中x减去2到1/2 ** p的幂,那么当前残差可能几乎为1/2 ** p。例如,对于1/64,残差可能是1/128 + 1/256 + 1/512 + ...,其可以是1/64以下的任何数字。所以残留量可能会超过0.01。 –

+1

@EricPostpischil:不要停在一个特定的位,当残留足够小时停止。在知道实际残留物之前,在潜在残留物足够小之前计算更多的零位毫无意义。 – Guffa

+0

我的观点是答案应该明确说明停止标准。正如目前所写,它没有;指示代词“that”没有明确的先行词,并且不清楚。我建议你编辑它。 –

相关问题