Java中如何实现自定义的分数类?

2026-06-10 07:081阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计442个文字,预计阅读时间需要2分钟。

Java中如何实现自定义的分数类?

概述:分数类在算法中非常重要,而在Java中,由于有BigInteger类,其重要性相对较低。Java基础类库提供了BigInteger类,用于大数运算,同时也提供了类似方式的类,以及package和组合数学的支持。

javapublic class Fraction { private long Numerator; // 分子 private long Denominator; // 分母}

概述

分数类在算法中非常重要, 而在java中不那么重要,java基础类库提供 了biginteger了,提供类似方式,

package 组合数学;

public class Fraction {

private long Numerator; // 分子
private long Denominator; // 分母

public Fraction(long numerator, long denominator) {
this.Numerator = numerator;
if (denominator == 0) {
throw new ArithmeticException("分母不能为零");
} else {
this.Denominator = denominator;
}
change();
}

public Fraction() {
this(0, 1);
}

public long getNumerator() {
return Numerator;
}

public void setNumerator(long numerator) {
Numerator = numerator;
}

public long getDenominator() {
return Denominator;
}

public void setDenominator(long denominator) {
Denominator = denominator;
}

private Fraction change() {
long gcd = this.gcd(this.Numerator, this.Denominator);
this.Numerator /= gcd;
this.Denominator /= gcd;
return this;
}

/**
* 最大公因数
*
* @param a
* @param b
* @return
*/
private long gcd(long a, long b) {
long mod = a % b;
if (mod == 0) {
return b;
} else {
return gcd(b, mod);
}
}

/**
* 四则运算
* @return
*/
public Fraction add(Fraction second) {
return new Fraction(this.Numerator * second.Denominator + second.Numerator * this.Denominator,
this.Denominator * second.Denominator);
}

public Fraction sub(Fraction second) {
return new Fraction(this.Numerator * second.Denominator - second.Numerator * this.Denominator,
this.Denominator * second.Denominator);
}

public Fraction multiply(Fraction second) {
return new Fraction(this.Numerator*second.Numerator,
this.Denominator * second.Denominator);
}

public Fraction devide(Fraction second) {
return new Fraction(this.Numerator*second.Denominator,
this.Denominator * second.Numerator);
}

@Override
public String toString() {
return String.format("{%d/%d}", this.Numerator, this.Denominator);
}
public static void main(String[] args) {
Fraction a = new Fraction(7, 32);
Fraction b = new Fraction(13, 32);
System.out.println(a.add(b));
}
}


Java中如何实现自定义的分数类?


本文共计442个文字,预计阅读时间需要2分钟。

Java中如何实现自定义的分数类?

概述:分数类在算法中非常重要,而在Java中,由于有BigInteger类,其重要性相对较低。Java基础类库提供了BigInteger类,用于大数运算,同时也提供了类似方式的类,以及package和组合数学的支持。

javapublic class Fraction { private long Numerator; // 分子 private long Denominator; // 分母}

概述

分数类在算法中非常重要, 而在java中不那么重要,java基础类库提供 了biginteger了,提供类似方式,

package 组合数学;

public class Fraction {

private long Numerator; // 分子
private long Denominator; // 分母

public Fraction(long numerator, long denominator) {
this.Numerator = numerator;
if (denominator == 0) {
throw new ArithmeticException("分母不能为零");
} else {
this.Denominator = denominator;
}
change();
}

public Fraction() {
this(0, 1);
}

public long getNumerator() {
return Numerator;
}

public void setNumerator(long numerator) {
Numerator = numerator;
}

public long getDenominator() {
return Denominator;
}

public void setDenominator(long denominator) {
Denominator = denominator;
}

private Fraction change() {
long gcd = this.gcd(this.Numerator, this.Denominator);
this.Numerator /= gcd;
this.Denominator /= gcd;
return this;
}

/**
* 最大公因数
*
* @param a
* @param b
* @return
*/
private long gcd(long a, long b) {
long mod = a % b;
if (mod == 0) {
return b;
} else {
return gcd(b, mod);
}
}

/**
* 四则运算
* @return
*/
public Fraction add(Fraction second) {
return new Fraction(this.Numerator * second.Denominator + second.Numerator * this.Denominator,
this.Denominator * second.Denominator);
}

public Fraction sub(Fraction second) {
return new Fraction(this.Numerator * second.Denominator - second.Numerator * this.Denominator,
this.Denominator * second.Denominator);
}

public Fraction multiply(Fraction second) {
return new Fraction(this.Numerator*second.Numerator,
this.Denominator * second.Denominator);
}

public Fraction devide(Fraction second) {
return new Fraction(this.Numerator*second.Denominator,
this.Denominator * second.Numerator);
}

@Override
public String toString() {
return String.format("{%d/%d}", this.Numerator, this.Denominator);
}
public static void main(String[] args) {
Fraction a = new Fraction(7, 32);
Fraction b = new Fraction(13, 32);
System.out.println(a.add(b));
}
}


Java中如何实现自定义的分数类?