给定一个重复的二进制数,例如 0.(0011) 或 0.0(101),如何将其转换为十进制?
到目前为止,我能够挖掘出的是将终止二进制数转换为十进制的简单方法,如下所示:
res(N+2) = res(N+1) / 2 + res(N)
其中 res 是步骤 N 之后的结果,N 是当前迭代 (N=0; n->(num binary digits))。例如,将其重复应用于非终止二进制数会得到一个很好的近似值
dec:0.4 || bin: 0.(0110):
0 / 2 + 0 = 0
0 / 2 + 0 = 0
0 / 2 + 1 = 1
1/2 / 2 + 1 = 3/2
3/2 / 2 + 0 = 3/4
3/4 / 2 + 0 = 3/8
3/8 / 2 + 1 = 19/16
19/16 / 2 + 1 = 51/32
51/32 / 2 + 0 = 51/64
51/64 / 2 + 0 = 51/128 = 0.3984
大约是 0.4。
所以,我有一种计算近似值的方法,但我正在努力寻找表达这一点的方法。我已经开始尝试把它写成一个系列,我可以在极限情况下计算为 n->inf 到目前为止没有太大的成功。