JAVA小数分数转换 |
您所在的位置:网站首页 › 分数转换小数 › JAVA小数分数转换 |
【问题描述】 从标准输入中输入一个小数,编写程序将其转换成相应的分数显示,即转换为几又几分之几。 要求: 1、输入的小数包括整数部分、小数点和小数部分;整数部分和小数部分最多有7位数字;整数部分可以为0,若整数部分大于等于1,则其最高位不为0;小数部分的末尾数字不为零。 2、输出的分数应为最简分数,由三个数字组成:第一个数字代表整数部分(若分数小于1,则为0,否则输出的整数的最高位不为0),第二个数字代表分子,第三个数字代表分母,分子比分母小且不能再约分。 【输入形式】 从标准输入中输入一个小数后打回车。 【输出形式】 将三个整数输出到标准输出,并且分别以一个空格分隔,最后一个整数后没有空格,有回车换行。 【样例1输入】 0.35 【样例1输出】 0 7 20 【样例2输入】 1050.0144 【样例2输出】 1050 9 625 【样例说明】 样例1中输入的小数为0.35,整数部分为0,小数部分转换为分数为35/100,约分成最简分数为7/20。 样例2中输入的小数为1050.0144,整数部分为1050,小数部分转换为分数为144/10000,约分成最简分数为9/625。 【评分标准】该题要求编程实现小数到分数的转换。 import java.util.Scanner; public class Train1 { public static int gcd(int a,int b){ return b==0 ? a:gcd(b,a%b) ;//利用辗转相除法求得最大公约数 } public static void main(String[] args){ Scanner in = new Scanner(System.in); String number;//定义字符number而非float或者double,方便后面的处理。 int decimal; int a, b,c; int g; number = in.next();//写入方式,区分nextline String[] array = new String[2];//定义长度为2的数组,分别存放整数位和小数位。 array = number.split("\\.");//利用.分割整数和小数 a = Integer.parseInt(array[0]);//整数部分 decimal = Integer.parseInt(array[1]);//小数部分 int length = array[1].length(); b = decimal; c = (int)Math.pow(10, length); g = gcd(b,c); System.out.println(a+" "+b/g+" "+c/g); } |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |