js实现分数
分数表示方法
在JavaScript中,分数可以通过对象或类来表示。常见的方法是创建一个包含分子和属性的对象。
const fraction = {
numerator: 3,
denominator: 4
};
分数运算
实现基本的分数运算需要处理加减乘除以及约分。
function addFractions(a, b) {
const numerator = a.numerator * b.denominator + b.numerator * a.denominator;
const denominator = a.denominator * b.denominator;
return simplify({ numerator, denominator });
}
function simplify(fraction) {
const gcd = findGCD(fraction.numerator, fraction.denominator);
return {
numerator: fraction.numerator / gcd,
denominator: fraction.denominator / gcd
};
}
function findGCD(a, b) {
return b === 0 ? a : findGCD(b, a % b);
}
类实现
使用ES6类可以更好地封装分数操作:
class Fraction {
constructor(numerator, denominator) {
this.numerator = numerator;
this.denominator = denominator;
}
add(other) {
const numerator = this.numerator * other.denominator + other.numerator * this.denominator;
const denominator = this.denominator * other.denominator;
return new Fraction(numerator, denominator).simplify();
}
simplify() {
const gcd = this.findGCD(this.numerator, this.denominator);
return new Fraction(this.numerator / gcd, this.denominator / gcd);
}
findGCD(a, b) {
return b === 0 ? a : this.findGCD(b, a % b);
}
}
使用示例
const frac1 = new Fraction(1, 2);
const frac2 = new Fraction(1, 4);
const result = frac1.add(frac2); // 返回 3/4
注意事项
处理分数时需要考虑分母为零的情况,应在构造函数中添加验证:
constructor(numerator, denominator) {
if (denominator === 0) throw new Error('Denominator cannot be zero');
this.numerator = numerator;
this.denominator = denominator;
}
负分数通常将负号放在分子上,可以在简化时处理:

simplify() {
let numerator = this.numerator;
let denominator = this.denominator;
if (denominator < 0) {
numerator *= -1;
denominator *= -1;
}
const gcd = this.findGCD(Math.abs(numerator), Math.abs(denominator));
return new Fraction(numerator / gcd, denominator / gcd);
}






