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());