以0.25为例, 0.25 * 100 = 25, 求25 和 100 的最大公约数gcd. 25/gcd 为分子. 100/gcd为分母.
1 //小数转分数 2 //0.3 -> 3/10, 0.25 -> 1/4 3 public class dicimalToFraction{ 4 public static void main(String [] args){ 5 double a = 0.3; 6 double b = 0.25; 7 System.out.println(dicimalToFraction(a)); 8 System.out.println(dicimalToFraction(b)); 9 } 10 11 public static String dicimalToFraction(double num){ 12 int count = 0; 13 int base = 10; 14 while(num != Math.floor(num)){ 15 num *= base; 16 count++; 17 } 18 19 base = (int)Math.pow(base,count); 20 int nor = (int)num; 21 int gcd = findGCD(nor, base); 22 23 24 return String.valueOf(nor/gcd) + "/" + String.valueOf(base/gcd); 25 } 26 27 28 //求最大公约数 29 private static int findGCD(int a, int b){ 30 if(a == 0){ 31 return b; 32 } 33 return findGCD(b%a, a); 34 } 35 36 }