我使用apache库中的Fraction
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 :(得分:3)
如果你看一下apache文档,你会看到这个
getProperWhole
public int getProperWhole()获取正确的整个部分 级分。
不正确的分数7/4可以分解成适当的1 3/4。 此方法从适当的分数返回1。
如果分数为负数,如-7/4,则可以将其分解为-1 3/4,所以这个方法返回正整数-1。
返回:适当分数的整个分数部分,包括 标志
所以,你的结果是预期的结果。
如果您想知道分数是否为整数。 你可以这样做:
f.getNumerator() % f.getDenominator() == 0 ? true : false
因为分数的舍入分数为分子的倍数。
作为替代方案,您还可以使用f.reduce()
减少分数,然后检查分母是否等于1。
答案 1 :(得分:1)
您似乎正在使用org.apache.commons.lang.math.Fraction
。这有一个getProperNumerator
方法,当且仅当分数等于整数时返回0
。