当前位置:首页 > 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)来实现。

js实现分数

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方法将分数转换为字符串形式。

js实现分数

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

扩展功能

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

  • 比较分数大小(如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
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现图片轮播

js实现图片轮播

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

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-contain…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…