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

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 Java 创建一个分数的问题,我可以为您提供以下代码: ``` class Fraction { private int numerator; private int denominator; public Fraction(int numerator, int denominator) { this.numerator = numerator; this.denominator = denominator; } public int getNumerator() { return numerator; } public int getDenominator() { return denominator; } public Fraction add(Fraction other) { int newDenominator = lcm(denominator, other.denominator); int newNumerator = numerator * (newDenominator / denominator) + other.numerator * (newDenominator / other.denominator); return new Fraction(newNumerator, newDenominator).simplify(); } public Fraction subtract(Fraction other) { int newDenominator = lcm(denominator, other.denominator); int newNumerator = numerator * (newDenominator / denominator) - other.numerator * (newDenominator / other.denominator); return new Fraction(newNumerator, newDenominator).simplify(); } public Fraction multiply(Fraction other) { int newNumerator = numerator * other.numerator; int newDenominator = denominator * other.denominator; return new Fraction(newNumerator, newDenominator).simplify(); } public Fraction divide(Fraction other) { int newNumerator = numerator * other.denominator; int newDenominator = denominator * other.numerator; return new Fraction(newNumerator, newDenominator).simplify(); } public boolean equals(Fraction other) { return numerator * other.denominator == denominator * other.numerator; } @Override public String toString() { return numerator + "/" + denominator; } private int gcd(int a, int b) { if (b == 0) { return a; } else { return gcd(b, a % b); } } private int lcm(int a, int b) { return a * b / gcd(a, b); } private Fraction simplify() { int gcd = gcd(numerator, denominator); if (gcd != 1) { return new Fraction(numerator / gcd, denominator / gcd); } else { return this; } } } ``` 这是一个基本的分数,其中包含四则运算和一些基本操作。您可以在此基础上进行扩展和优化。希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值