先把小数转成10的N次方分之几的形式,然后算分子和分母的最大公数,再把分子和分母除以这个最大分约数,不就换成了最简分数?

解决方案 »

  1.   

    就是这个算法不好写,不知道有没有现成的啊,大哥
      

  2.   

    临时写了一个,仅供参考。package ltx;import java.lang.String;public class Xs2fs {
        
        
        public static String xs2fs(double fNumber) {
            
            String sA = String.valueOf(fNumber);
            
            if (sA.indexOf(".") < 0) {
                // fNumber is an integer
                
                return sA;
            }
            
            String sZsbf = sA.substring(0,sA.indexOf(".") );
            String sXsbf = sA.substring(sA.indexOf(".") + 1);
            
            int nXsws = sXsbf.length() ; //小数位数
            
            long lFenmu = 1;
            for (int k=0; k< nXsws; k++)
                lFenmu *= 10;
            
            long lFenzi = Long.parseLong( sZsbf + sXsbf );
            
            long lXs = (lFenzi < lFenmu) ? lFenzi : lFenmu;
            
            long j = 1; //最大公约数
            for (j = lXs; j > 1; j --) {
                if (lFenzi % j ==0 && lFenmu % j == 0) {
                    break;
                }
            }
            
            lFenzi = lFenzi / j;
            lFenmu = lFenmu / j;
            
            return String.valueOf(lFenzi) + "/" + String.valueOf(lFenmu) ;
            
        }
        
        public static void main(String[] args) {
            System.out.println ( xs2fs(1.24) );
        }}
      

  3.   

    测试通过,大侠啊,真是感谢了。好人、强人也
      

  4.   

    测试了一下,发现1/3, 1/7这样的转成小数后不能转回来了。请问各位有没有好办法