2016-01-27 61 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更改爲更大的值。