importjava.math.BigInteger;publicclassFraction {
BigInteger numerator, denominator, gcd;voidset(String n, String d) {
numerator=newBigInteger(n);
denominator=newBigInteger(d);
}voidsimplify() {
gcd=numerator.gcd(denominator);
numerator=numerator.divide(gcd);
denominator=denominator.divide(gcd);if(denominator.compareTo(BigInteger.ZERO)<0) {
numerator=numerator.negate();
denominator=denominator.negate();
}
}intcompareTo(Fraction y) {
Fraction z=this.subtract(y);returnz.numerator.compareTo(BigInteger.ZERO);
}
Fraction abs() {
Fraction z=newFraction();if(numerator.compareTo(BigInteger.ZERO)<0) {
z.numerator=numerator.negate();
}else{
z.numerator=numerator;
}if(denominator.compareTo(BigInteger.ZERO)<0) {
z.denominator=denominator.negate();
}else{
z.denominator=denominator;
}returnz;
}
Fraction negate() {
Fraction z=this;
z.numerator=z.numerator.negate();returnz;
}booleanzero() {returnnumerator.compareTo(BigInteger.ZERO)==0;
}
Fraction add(Fraction y) {
Fraction z=newFraction();
gcd=denominator.gcd(y.denominator);
z.denominator=denominator.multiply(y.denominator).divide(gcd);
z.numerator=numerator.multiply(z.denominator.divide(denominator)).add(y.numerator.multiply(z.denominator.divide(y.denominator)));
z.simplify();returnz;
}
Fraction subtract(Fraction y) {
Fraction z=newFraction();
gcd=denominator.gcd(y.denominator);
z.denominator=denominator.multiply(y.denominator).divide(gcd);
z.numerator=numerator.multiply(z.denominator.divide(denominator)).subtract(y.numerator.multiply(z.denominator.divide(y.denominator)));
z.simplify();returnz;
}
Fraction multiply(Fraction y) {
Fraction z=newFraction();
z.numerator=numerator.multiply(y.numerator);
z.denominator=denominator.multiply(y.denominator);
z.simplify();returnz;
}
Fraction divide(Fraction y) {
Fraction z=newFraction();
z.numerator=numerator.multiply(y.denominator);
z.denominator=denominator.multiply(y.numerator);
z.simplify();returnz;
}voidprint() {if(denominator.compareTo(BigInteger.ONE)!=0) {
System.out.printf("%s/%s", numerator.toString(), denominator.toString());
}else{
System.out.printf("%s", numerator.toString());
}
System.out.println();
}
该博客展示了一个Java分数类的实现代码。此分数类包含设置分数、化简、比较、绝对值、取反等方法,还实现了分数的加、减、乘、除运算,最后有打印分数的方法,为Java中分数运算提供了完整的解决方案。

204

被折叠的 条评论
为什么被折叠?



