js实现分数
实现分数的基本结构
在JavaScript中,可以通过创建一个Fraction类来表示分数。该类包含分子(numerator)和分母(denominator)属性,并提供基本的运算方法。
class Fraction {
constructor(numerator, denominator = 1) {
if (denominator === 0) throw new Error("Denominator cannot be zero");
this.numerator = numerator;
this.denominator = denominator;
this.simplify();
}
}
约分方法
分数通常需要约分到最简形式。可以通过计算分子和分母的最大公约数(GCD)来实现。

simplify() {
const gcd = this.calculateGCD(Math.abs(this.numerator), Math.abs(this.denominator));
this.numerator /= gcd;
this.denominator /= gcd;
// 确保分母为正
if (this.denominator < 0) {
this.numerator *= -1;
this.denominator *= -1;
}
}
calculateGCD(a, b) {
return b === 0 ? a : this.calculateGCD(b, a % b);
}
加减乘除运算
为Fraction类添加加法、减法、乘法和除法方法。
add(other) {
const newNumerator = this.numerator * other.denominator + other.numerator * this.denominator;
const newDenominator = this.denominator * other.denominator;
return new Fraction(newNumerator, newDenominator);
}
subtract(other) {
const newNumerator = this.numerator * other.denominator - other.numerator * this.denominator;
const newDenominator = this.denominator * other.denominator;
return new Fraction(newNumerator, newDenominator);
}
multiply(other) {
const newNumerator = this.numerator * other.numerator;
const newDenominator = this.denominator * other.denominator;
return new Fraction(newNumerator, newDenominator);
}
divide(other) {
if (other.numerator === 0) throw new Error("Cannot divide by zero");
const newNumerator = this.numerator * other.denominator;
const newDenominator = this.denominator * other.numerator;
return new Fraction(newNumerator, newDenominator);
}
转换为字符串
为了方便输出,可以添加toString方法将分数转换为字符串形式。

toString() {
if (this.denominator === 1) return `${this.numerator}`;
return `${this.numerator}/${this.denominator}`;
}
示例用法
以下是如何使用Fraction类进行分数运算的示例:
const a = new Fraction(1, 2);
const b = new Fraction(3, 4);
console.log(a.add(b).toString()); // 输出: 5/4
console.log(a.subtract(b).toString()); // 输出: -1/4
console.log(a.multiply(b).toString()); // 输出: 3/8
console.log(a.divide(b).toString()); // 输出: 2/3
扩展功能
如果需要更多功能,可以进一步实现以下方法:
- 比较分数大小(如
equals、greaterThan)。 - 转换为小数(如
toDecimal)。 - 支持负分数和整数输入。
equals(other) {
const a = new Fraction(this.numerator, this.denominator);
const b = new Fraction(other.numerator, other.denominator);
a.simplify();
b.simplify();
return a.numerator === b.numerator && a.denominator === b.denominator;
}
toDecimal() {
return this.numerator / this.denominator;
}
通过以上实现,可以方便地在JavaScript中处理分数运算。






