java分数类_一个Java分数类.

该博客展示了一个Java分数类的实现代码。此分数类包含设置分数、化简、比较、绝对值、取反等方法,还实现了分数的加、减、乘、除运算,最后有打印分数的方法,为Java中分数运算提供了完整的解决方案。
摘要由CSDN通过智能技术生成

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();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值