2016-02-05 42 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

相关问题