有理循环小数

package com.zh.test;
/*  有理循环小数 
1/7 = 0.142857142... 是个无限循环小数。 
任何有理数都可以表示为无限循环小数的形式。 
本题目要求即是:给出一个数字的循环小数表示法。 
例如: 
输入: 
1,5 
则输出: 
0.2 
 
输入: 
1,7 
则输出: 
0.[142857] 
输入: 
7,6 
则输出: 
1.1[6] 
用户输入的格式是: 
整数,整数 
每个整数范围均为:1~1000 
程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。 
 */  

import java.util.ArrayList;

public class Test11 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        f(3,9);
    }
    
    public static void f(int m,int n){
        ArrayList<Integer> list=new ArrayList<Integer>();//记录余数
        StringBuffer buffer=new StringBuffer();//添加商 也就是结果
        buffer.append(m/n+".");
        m = m%n;  //得到余数
        while(m != 0){ //余数为0
            if(list.contains(m)){
                System.out.println("ddd");
                int i=0;
                for(;i<buffer.length();i++){
                    if(buffer.charAt(i) - '0' == m*10/n){
                        break;
                    }
                }
                
                buffer.insert(i, '[');
                buffer.insert(buffer.length(), ']');
                break;
            }else{
                list.add(m);  //添加余数
                buffer.append(m*10/n);  //添加商
            }
            
            m = m*10% n;
        }
        System.out.println(buffer.toString());
    }

}

 

posted on 2014-03-18 18:51  邵邵  阅读(472)  评论(0编辑  收藏  举报

淘宝美工兼职招聘