双重转换为分数

时间:2016-01-27 07:26:14

标签: java math double converter fractions

我希望将双转换值转换为分数(在Java中)。

示例:0.33333 - > 1/3

我找到了Fraction的很多例子,但这对我没有帮助。 数字始终在0到1之间。

或许有人有想法吗?

Tahnks,

1 个答案:

答案 0 :(得分:2)

我想你想要一个double值的近似分数表示(就像你的例子)

一种简单的方法是逐个尝试分母:

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更改为更大的值。