java 如何表述分数
分数表示方法
在Java中,可以通过多种方式表示和操作分数。以下是几种常见的方法:

自定义分数类
创建一个自定义类来封装分数的分子和分母,并提供基本的算术运算和简化功能。

public class Fraction {
private int numerator;
private int denominator;
public Fraction(int numerator, int denominator) {
if (denominator == 0) {
throw new IllegalArgumentException("Denominator cannot be zero.");
}
this.numerator = numerator;
this.denominator = denominator;
simplify();
}
private void simplify() {
int gcd = gcd(Math.abs(numerator), Math.abs(denominator));
numerator /= gcd;
denominator /= gcd;
if (denominator < 0) {
numerator *= -1;
denominator *= -1;
}
}
private int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
public Fraction add(Fraction other) {
int newNumerator = numerator * other.denominator + other.numerator * denominator;
int newDenominator = denominator * other.denominator;
return new Fraction(newNumerator, newDenominator);
}
@Override
public String toString() {
return denominator == 1 ? String.valueOf(numerator) : numerator + "/" + denominator;
}
}
使用Apache Commons Math库
Apache Commons Math库提供了Fraction类,可以直接用于分数运算。
import org.apache.commons.math3.fraction.Fraction;
Fraction f1 = new Fraction(1, 2);
Fraction f2 = new Fraction(3, 4);
Fraction sum = f1.add(f2);
System.out.println(sum); // 输出 5/4
使用BigDecimal
对于高精度的分数运算,可以使用BigDecimal来表示分数,并通过除法操作实现。
import java.math.BigDecimal;
import java.math.RoundingMode;
BigDecimal numerator = new BigDecimal("1");
BigDecimal denominator = new BigDecimal("3");
BigDecimal fraction = numerator.divide(denominator, 10, RoundingMode.HALF_UP);
System.out.println(fraction); // 输出 0.3333333333
注意事项
- 自定义类需要处理分母为零的情况。
- 分数的简化可以通过计算最大公约数(GCD)实现。
- 使用第三方库如Apache Commons Math可以简化开发,但会增加依赖。
以上方法可以根据具体需求选择适合的方式来表示和操作分数。






