刚解决了吧里一位兄弟的关于小数转换成分数形式输出的问题。
import java.util.Scanner;
/**
* 形如12.345这样的小数转换成分数,首先小数位转换成分数 是将小数点后345/1000;
* 加上小数点前面的数字就是(12*1000+345) / 1000;
*
* 小数输入以小数点为分界做字符串分割,得到小数点前后的数字,然后就好转换了。
* 这里也不好定义一个有意义的变量名 姑且小数点前的数字就定义为a,小数点后为b。b的长度为length.
*
*
*
* */
public class ChangeToFenshu { public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入小数:");
String decimals = input.next();
String[] arr = new String[2];
arr = decimals.split("\\.");
int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[1]);
int length = arr[1].length();
//就这样输出可能分子分母可以约分 , 那就需要找出分子分母的最大公约数;然后化成最简分数形式
//先定义一个方法getGongYueShu()求两个数的最大公约数
int FenZi = (int)(a*Math.pow(10,length)+b);
int FenMu = (int)Math.pow(10, length);
//调用方法getGongYueShu()求出最大公约数
int MaxYueShu = ChangeToFenshu.getGongYueShu(FenZi, FenMu);
//输出最简分数
System.out.println(FenZi / MaxYueShu + "/" + FenMu / MaxYueShu);
}
public static int getGongYueShu(int a, int b) {
int temp = 0;
if(a < b){
temp = a;
a = b;
b = temp;
}
int r = a % b;
if(r == 0){
return b;
}
else {
return getGongYueShu(b, r);
}
}
}