35 lines
1.1 KiB
Java
35 lines
1.1 KiB
Java
double fractionToDecimal(String string) {
|
|
int indexOf = string.indexOf(' ');
|
|
int integer = 0;
|
|
int numerator, denominator;
|
|
if (indexOf != -1) {
|
|
integer = Integer.parseInt(string.substring(0, indexOf));
|
|
string = string.substring(indexOf + 1);
|
|
}
|
|
indexOf = string.indexOf('/');
|
|
numerator = Integer.parseInt(string.substring(0, indexOf));
|
|
denominator = Integer.parseInt(string.substring(indexOf + 1));
|
|
return integer + ((double) numerator / denominator);
|
|
}
|
|
|
|
String decimalToFraction(double value) {
|
|
String string = String.valueOf(value);
|
|
string = string.substring(string.indexOf('.') + 1);
|
|
int numerator = Integer.parseInt(string);
|
|
int denominator = (int) Math.pow(10, string.length());
|
|
int gcf = gcf(numerator, denominator);
|
|
if (gcf != 0) {
|
|
numerator /= gcf;
|
|
denominator /= gcf;
|
|
}
|
|
int integer = (int) value;
|
|
if (integer != 0)
|
|
return "%d %d/%d".formatted(integer, numerator, denominator);
|
|
return "%d/%d".formatted(numerator, denominator);
|
|
}
|
|
|
|
int gcf(int valueA, int valueB) {
|
|
if (valueB == 0) return valueA;
|
|
else return gcf(valueB, valueA % valueB);
|
|
}
|