用js 进行分数计算

js 用分数计算


没有找到好用的库只好自己写了。如果有好用的库可以推荐下

/**
 * @param {Object} numerator 分子
 * @param {Object} denominator 分母
 */
export default function Fraction(numerator, denominator) {
    this.numerator = numerator;
    this.denominator = denominator;
}

// 分数相加
Fraction.prototype.add = function(otherFraction) {
    var resultNumerator = this.numerator * otherFraction.denominator + otherFraction.numerator * this.denominator;
    var resultDenominator = this.denominator * otherFraction.denominator;
    return new Fraction(resultNumerator, resultDenominator);
}

// 分数相减
Fraction.prototype.subtract = function(otherFraction) {
    var resultNumerator = this.numerator * otherFraction.denominator - otherFraction.numerator * this.denominator;
    var resultDenominator = this.denominator * otherFraction.denominator;
    return new Fraction(resultNumerator, resultDenominator);
}

// 分数相乘
Fraction.prototype.multiply = function(otherFraction) {
    var resultNumerator = this.numerator * otherFraction.numerator;
    var resultDenominator = this.denominator * otherFraction.denominator;
    return new Fraction(resultNumerator, resultDenominator);
}

// 分数相除
Fraction.prototype.divide = function(otherFraction) {
    var resultNumerator = this.numerator * otherFraction.denominator;
    var resultDenominator = this.denominator * otherFraction.numerator;
    return new Fraction(resultNumerator, resultDenominator);
}

// 简化分数
// 简化分数
Fraction.prototype.simplify = function() {
    var gcd = function(a, b) {
        return b ? gcd(b, a % b) : a;
    };
    var commonDivisor = gcd(this.numerator, this.denominator);
    var simplifiedNumerator = this.numerator / commonDivisor;
    var simplifiedDenominator = this.denominator / commonDivisor;
    if (simplifiedDenominator === 1) {
        return simplifiedNumerator;
    } else {
        return new Fraction(simplifiedNumerator, simplifiedDenominator);
    }
}

// 将分数转换为字符串
Fraction.prototype.toString = function() {
    return this.numerator + "/" + this.denominator;
}

// // 使用示例
// var fraction1 = new Fraction(1, 2);
// var fraction2 = new Fraction(1, 3);

// console.log("分数1:", fraction1.toString());
// console.log("分数2:", fraction2.toString());

// var resultAdd = fraction1.add(fraction2);
// console.log("相加结果:", resultAdd.simplify().toString());

// var resultSubtract = fraction1.subtract(fraction2);
// console.log("相减结果:", resultSubtract.simplify().toString());

// var resultMultiply = fraction1.multiply(fraction2);
// console.log("相乘结果:", resultMultiply.simplify().toString());

// var resultDivide = fraction1.divide(fraction2);
// console.log("相除结果:", resultDivide.simplify().toString());
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用JavaScript进行分数运算的示例代码: // 定义分数对象 function Fraction(numerator, denominator) { this.numerator = numerator; this.denominator = denominator; } // 分数加法 Fraction.prototype.add = function(other) { var gcd = this.gcd(this.denominator, other.denominator); var lcm = this.lcm(this.denominator, other.denominator, gcd); var numerator = (this.numerator * lcm / this.denominator) + (other.numerator * lcm / other.denominator); return new Fraction(numerator, lcm); } // 分数减法 Fraction.prototype.subtract = function(other) { var gcd = this.gcd(this.denominator, other.denominator); var lcm = this.lcm(this.denominator, other.denominator, gcd); var numerator = (this.numerator * lcm / this.denominator) - (other.numerator * lcm / other.denominator); return new Fraction(numerator, lcm); } // 分数乘法 Fraction.prototype.multiply = function(other) { var numerator = this.numerator * other.numerator; var denominator = this.denominator * other.denominator; return new Fraction(numerator, denominator); } // 分数除法 Fraction.prototype.divide = function(other) { var numerator = this.numerator * other.denominator; var denominator = this.denominator * other.numerator; return new Fraction(numerator, denominator); } // 求最大公约数 Fraction.prototype.gcd = function(a, b) { if (b === 0) { return a; } else { return this.gcd(b, a % b); } } // 求最小公倍数 Fraction.prototype.lcm = function(a, b, gcd) { return (a * b) / gcd; } // 测试分数运算 var frac1 = new Fraction(1, 2); var frac2 = new Fraction(2, 3); console.log(frac1.add(frac2)); // 输出结果为5/6 console.log(frac1.subtract(frac2)); // 输出结果为-1/6 console.log(frac1.multiply(frac2)); // 输出结果为1/3 console.log(frac1.divide(frac2)); // 输出结果为3/4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值