#java #eclipse #division
Вопрос:
public static void main(String[] args) {
int[] y = division(230,6);
System.out.println(y[0] " " y[1] "/" y[2])
}
private static int[] division(int nominator, int denominator) {
int k = nominator / denominator;
int r = nominator % denominator;
int n = denominator;
int[] arr = { k, r, n };
return arr;
}
}
деление 230/6 даст мне 38 2/6. Я хочу получить 38 1/3, я хочу, чтобы часть дроби была в уменьшенном виде. Я не уверен, как это сделать на java. Есть ли какой-нибудь простой способ получить дробную часть в уменьшенном виде без использования одного из встроенных методов java.
Комментарии:
1. вы можете разработать метод, который находит GCD (Наибольший общий делитель) r и n. После этого вы делите r на GCD также n ==> > beginnersbook.com/2018/09/…
2.
without using one of the inbuilt methods of java
… вы, конечно, не имели в виду то, что сказали там, верно? @jhdev хороший ответ
Ответ №1:
Вы можете разработать метод, который находит GCD r
и n
:
private static int findGCD(int num1, int num2) {
while (num1 != num2) {
if(num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
}
return num2;
}
в методе разделения вы можете добавить этот код :
int gcd = findGCD(r, n);
И заменить
int[] arr = { k, r, n };
С :
int[] arr = { k, r/gcd, n/gcd };
Комментарии:
1. Почему я возвращаю num2, а не num1?. Я получаю одно и то же значение независимо от того, возвращаю ли я num2 или num1.
2. условие While равно num1 != num2, поэтому оно остановится, когда num1 == num2. Почему такое состояние? это математическая логика
3. таким образом, не имеет значения, верну ли я num1 или num2, я все равно получу то же самое возвращенное значение?