当前位置:首页 > 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
分享给朋友:

相关文章

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…