双转换为分数

Double convert to Fraction

我想要将值双重转换为分数(Java)。

示例:0.33333 -> 1/3

我找到了很多分数的例子,但这对我没有帮助。 数字总是在 0 到 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 更改为更大的值。