2016-01-27 3 views
1

Я хочу, чтобы значение двойной конвертации во фракцию (на Java).Двойной конвертировать в Фракцию

Пример: 0,33333 -> 1/3

У меня есть много примеров, дробные найдено, но это не помогает мне. Цифры всегда находятся между 0 и 1.

Возможно, у кого-нибудь есть идея?

Tahnks,

+1

Вы должны указать [mcve] –

+1

, если быть точным, 0.33333 ** ** ** 1/3. Какая точность вам нужна? –

ответ

1

Я предполагаю, что вы хотите приблизительную дробь представление двойного значения (например, ваш пример)

Простой способ попробовать знаменателей один за другим:

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 на большее значение, если хотите получить более сжатый результат фракции.

Смежные вопросы