双转换为分数
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
更改为更大的值。
我想要将值双重转换为分数(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
更改为更大的值。