我希望将双转换值转换为分数(在Java中)。
示例:0.33333 - > 1/3
我找到了Fraction的很多例子,但这对我没有帮助。 数字始终在0到1之间。
或许有人有想法吗?
Tahnks,
答案 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
更改为更大的值。