2016-02-05 27 views
-1

我用分數來自Apache的庫是否有辦法知道小數部分實際上是整數?

Fraction fraction = Fraction.getFraction(0, 7, 13); 
fraction = fraction.multiplyBy(Fraction.getFraction(26)); 
System.out.print(fraction.getProperWhole()); 

此代碼返回14 - 預期結果

Fraction fraction = Fraction.getFraction(0, 7, 13); 
fraction = fraction.multiplyBy(Fraction.getFraction(27)); 
System.out.print(fraction.getProperWhole()); 

它開口14太多,但實際上它並不確切14

是否有辦法知道分數實際上是整數

+0

那麼什麼是'分數'類?這不是一個標準的Java類,所以我們不知道它提供了什麼功能。 –

+1

@JonSkeet從*「我使用apache庫中的分數」*,它似乎是https://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/fraction/Fraction。 html –

+0

它看起來像getReducedFraction會回答:如果分數可以減少到一個整數,分母將是1 –

回答

1

你似乎使用org.apache.commons.lang.math.Fraction。這有一個getProperNumerator方法返回0當且僅當分數等於一個整數。

3

如果你看看Apache文檔,你會看到這個

getProperWhole

公衆詮釋getProperWhole()獲取 分數的正確整體的一部分。

不正確的分數7/4可以分解爲適當的1 3/4。 該方法從適當的分數中返回1。

如果分數爲負數,例如-7/4,則可以分解爲-1 3/4,因此此方法返回正整數-1。

返回:真分數的整體小數部分,包括 符號

所以,你的結果是所預期的。

如果您想知道分數是否是整數。 你可以做這樣的事情:通過分母的倍數

f.getNumerator() % f.getDenominator() == 0 ? true : false 

由於圓形分數作爲其分子來。

也可以使用f.reduce()來減小分數,然後檢查分母是否等於1。

來源:https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/math/Fraction.html#getProperWhole()

+0

我明白了。但它不能解決我的問題 – gstackoverflow

+0

@gstackoverflow你能解釋你的問題是什麼更詳細的,因爲它似乎是你所需要的,我讀它的方式。 –

+0

怎麼樣fraction.reduce()然後檢查fraction.getDenoninator()== 1 – gstackoverflow

相關問題