从二进制转换为十进制是否存在限制?(就像从十进制转换为二进制时一样存在限制吗?)

6
众所周知,并非所有十进制小数都能用二进制表示(有限位数)。
我想知道,是否所有(有限的)二进制数都能用(有限的)十进制位数表示?我怀疑是这样的,因为二进制中的所有“基本元素”(“0.5”,“0.125”等)都可以用有限的十进制位数表示。
那么,我的问题是:什么是“兼容的进制转换”?也就是说,“2进制→10进制”具有哪些数学特性,而“10进制→2进制”则没有?
(正式表述:为了确保所有有限的N进制数都有相应的有限M进制数,必须具备哪些属性?)

+1 很好的、写得很好的问题,涉及到许多人感到困惑的话题。 - R.. GitHub STOP HELPING ICE
1个回答

14
如果n是一个二进制小数,则n = a / 2k,其中ak是整数。

这意味着n = (a · 5k) / (2k · 5k) = (a · 5k) / 10k
因此,每个二进制小数都是十进制小数。
一般情况下,对于任何基数N的分数,仅当N除以某些k次方的M时(或等效地,如果N的每个质因数也是M的质因数),该分数也是基数M的分数。与我上面为2和10提供的论证类似,可以处理“if”方向。对于“only if”方向,请参阅以下概要证明:假设1 / N = a / Mk,则Mk = a · N,因此N除以Mk
因此,二进制可以转换为十进制而不会丢失任何信息,因为2是10的因子,但十进制无法转换为二进制而不会丢失信息,因为5是10的因子,但2的因子不是。

我暂时看不出分数和有限数字之间的关系。例如,1/3无法用有限数量的十进制数字表示。 - aioobe
这只是术语而已:“二进制分数”表示“在二进制中有精确表示的分数”,而“十进制分数”表示“在十进制中有精确表示的分数”。 - Gareth Rees
啊哈,我再次以此为前提阅读了你的答案,现在这个答案非常有道理。 :-) - aioobe
2
哈哈,这个草图的证明比我第一次阅读时想象的要隐藏更多的细节。优美的注释加1分。 - Chris Cunningham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接