Java中是否有一个常用的有理数库?

我正在寻找一个表示分数(有理数)的Java库。例如,如果我要存储分数,1/3那么它将不会被保存,0.33333因为它将失去其准确性。

这是我希望在此类库中找到的一些功能:

  • getNumerator()
  • getDenominator()
  • add(Rational r1, Rational r2)subtract(Rational r1, Rational r2)multiply(Rational r1, Rational r2)divide(Rational r1, Rational r2)
  • isProper()
  • getCommonDenominator(Collection<Rational> rationals)
  • getSimplified()

尽管我想知道是否已经存在类似的东西,但我可以自己实现这样的库。

如果该库还实现(除上述之外)某些数论算法(如getEgyptianFractionsSum()等等),那也很好。

回答:

JScience库包括该类org.jscience.mathematics.number.Rational。在另外的通常的工厂,存取和操作,可以构建其他有用的实体,包括Polynomial<Rational>Vector<Rational>Matrix<Rational>

例如,获取分数集合的最低公分母的函数可能看起来像这样:

private static LargeInteger lcd(Collection<Rational> fractions) {

Rational sum = Rational.ZERO;

for (Rational rational : fractions) {

sum = sum.plus(rational);

}

return sum.getDivisor();

}

以下语句显示6

System.out.println(lcd(Arrays.asList(

Rational.valueOf(1, 2), Rational.valueOf(1, 3))));

以上是 Java中是否有一个常用的有理数库? 的全部内容, 来源链接: utcz.com/qa/398600.html

回到顶部