当前位置:首页 > JavaScript

js实现分数

2026-01-31 22:20:15JavaScript

实现分数的基本结构

在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

扩展功能

如果需要更多功能,可以进一步实现以下方法:

js实现分数

  • 比较分数大小(如equalsgreaterThan)。
  • 转换为小数(如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中处理分数运算。

标签: 分数js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…