Я предполагаю, что вы хотите приблизительную дробь представление двойного значения (например, ваш пример)
Простой способ попробовать знаменателей один за другим:
double doubleVal = 0.33333;
double negligibleRatio = 0.01;
for(int i=1;;i++){
double tem = doubleVal/(1D/i);
if(Math.abs(tem-Math.round(tem))<negligibleRatio){
System.out.println(Math.round(tem)+"/"+i);
break;
}
}
Это отпечатки 1/3
. Если вы установили double doubleVal = 0.6363636;
, он печатает 7/11
.
Вы можете изменить negligibleRatio
на большее значение, если хотите получить более сжатый результат фракции.
Вы должны указать [mcve] –
, если быть точным, 0.33333 ** ** ** 1/3. Какая точность вам нужна? –