当前位置:首页 > JavaScript

js实现分数

2026-03-13 20:22:34JavaScript

js实现分数

实现分数表示和运算

在JavaScript中实现分数(Fraction)需要创建表示分数的数据结构,并实现相关运算方法(加减乘除、约分等)。以下是完整实现方案:

js实现分数

创建分数类

class Fraction {
  constructor(numerator, denominator = 1) {
    if (denominator === 0) throw new Error('Denominator cannot be zero');
    this.numerator = numerator;
    this.denominator = denominator;
    this.normalize();
  }
}

约分方法

normalize() {
  const gcd = this.findGCD(Math.abs(this.numerator), Math.abs(this.denominator));
  this.numerator /= gcd;
  this.denominator /= gcd;

  // 确保分母始终为正
  if (this.denominator < 0) {
    this.numerator *= -1;
    this.denominator *= -1;
  }
  return this;
}

findGCD(a, b) {
  return b === 0 ? a : this.findGCD(b, a % b);
}

加法运算

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) {
  return new Fraction(
    this.numerator * other.numerator,
    this.denominator * other.denominator
  );
}

除法运算

divide(other) {
  if (other.numerator === 0) throw new Error('Cannot divide by zero');
  return new Fraction(
    this.numerator * other.denominator,
    this.denominator * other.numerator
  );
}

转换为字符串

toString() {
  if (this.denominator === 1) return `${this.numerator}`;
  return `${this.numerator}/${this.denominator}`;
}

转换为小数

toDecimal() {
  return this.numerator / this.denominator;
}

使用示例

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"
console.log(a.toDecimal());            // 输出 0.5

扩展功能

对于更完整的实现,可以添加以下方法:

  • 比较方法(equals, compareTo)
  • 绝对值方法(abs)
  • 倒数方法(reciprocal)
  • 幂运算方法(pow)

这种实现方式保持了分数的精确计算,避免了浮点数运算带来的精度问题,适合需要精确分数运算的场景(如数学计算、金融应用等)。

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

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…