从编程的角度讲是完全没希望的,因为在计算机中存储的Double型变量一定是2进制的有限小数,并且有表示范围的问题。无法直接表示的数会取最近的近似值来存贮,所以只要a已经是Double型变量就没有机会保留无限小数或无理数的信息了。在计算机当中精确存贮实数需要用符号而非数值来实现。至于数学上循环小数转分数的方法,这个比较容易,比如说x的循环节是n位,那么10^n*x-x是有限小数c,即x=c/(10^n-1),最后用辗转相除法把最大公因子约掉就行了。