在《编程之美》里看到这个方法。
对于混循环小数的情况,计算公式是:
0.a1a2...an(b1b2...bm)=(a1a2...an+(b1b2...bm)/(10m-1))/(10n-1);
如果是纯循环小数:
0.(a1a2...an)=(a1a2...an)/(10n-1)
推导过程很简单:
设X=0.(a1a2...an)
10n*X = a1a2...an+X
(10n-1)X=a1a2...an
所以 X=(a1a2...an)/(10n-1)
然后将得到的分数约分即所求。
5/11=0.(45)
=45/(10^2-1)
=45/99
=5/11