• 题在这里:

    http://blog.donews.com/wysuperfly/archive/2005/12/22/667661.aspx

    简单说就是:一个表示为I.F(L)*的有理数,如何转换成分数.

    三部分:

    1.处理输入字符串,找出循环小数的循环部分和前缀. 1.234(56), 1.23是前缀,(56)是循环部分. I.F(L)*,I.F是前缀,L是循环部分.

    2.转换成分数.对前缀,分子用前缀串,分母用10的N次方,N是前缀的小数部分.对循环部分,分子是循环串,分母是10的M次方-1,M是循环串长度.用正则表式法会更清楚,不过太长,不写了.其实就是:

    IF / (10^(length_of(F))) + L / (10 ^ (length_of(L)) - 1)

    3.加和,用中国最大公约数算法约分.