可能重复:
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,但现在我将如何继续,请帮助一些。
可能重复:
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,但现在我将如何继续,请帮助一些。
小数部分不应该转换为数字本身,而应该作为分数转换。将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。
在这种情况下停止在1/64工作,但不是一般情况。如果对于某些x来说,从正在进行的残差中x减去2到1/2 ** p的幂,那么当前残差可能几乎为1/2 ** p。例如,对于1/64,残差可能是1/128 + 1/256 + 1/512 + ...,其可以是1/64以下的任何数字。所以残留量可能会超过0.01。 –
@EricPostpischil:不要停在一个特定的位,当残留足够小时停止。在知道实际残留物之前,在潜在残留物足够小之前计算更多的零位毫无意义。 – Guffa
我的观点是答案应该明确说明停止标准。正如目前所写,它没有;指示代词“that”没有明确的先行词,并且不清楚。我建议你编辑它。 –
投票重新开放,因为IEEE 754格式完全不是这个问题的答案。 – Guffa
提供的可疑重复链接与我的问题无关。如果一个人有同样的问题,我已经发布在这里,并参观该参考链接,他将无法从那里得到任何指导或帮助,所以我请求现场提出这个问题。 已投票结束的会员,请解释我将如何从您提到的重复链接中获得我的答案并解释过程。 – John
这个问题特别要求一些东西(意思是'分数二进制'),它可以作为对IEEE754问题的答案的一部分来回答,但是现在还没有。我也觉得在没有尾数,隐藏位,反常规等复杂情况下回答这个问题是有道理的...... – greggo