在Java定义一个类,只算两个分数的加法? 测试a是1/2 b是1/3
发布网友
发布时间:2022-05-01 07:09
我来回答
共2个回答
热心网友
时间:2022-06-25 22:02
public static void main(String args[]) {
String s1 = "1/8", s2 = "3/8";
String[] a = s1.split("/");
String b[] = s2.split("/");
int fenmu = minCommonMultiple(Integer.parseInt(a[1]), Integer
.parseInt(b[1]));
int fenzi = fenmu / Integer.parseInt(a[1]) * Integer.parseInt(a[0])
+ fenmu / Integer.parseInt(b[1]) * Integer.parseInt(b[0]);
int yueshu = maxCommonDivisor(fenmu, fenzi);
if (yueshu != 0) {
fenzi /= yueshu;
fenmu /= yueshu;
}
if (fenmu == 1)
System.out.println(fenzi);
else
System.out.println(fenzi + "/" + fenmu);
}
public static int maxCommonDivisor(int m, int n) {
if (m < n) {// 保证m>n,若m<n,则进行数据交换
int temp = m;
m = n;
n = temp;
}
if (m % n == 0) {// 若余数为0,返回最大公约数
return n;
} else { // 否则,进行递归,把n赋给m,把余数赋给n
return maxCommonDivisor(n, m % n);
}
}
// 求最小公倍数
public static int minCommonMultiple(int m, int n) {
return m * n / maxCommonDivisor(m, n);
}
热心网友
时间:2022-06-25 22:03
如果直接用float相加会有精度丢失,不能直接加,要做处理