当前位置:首页 > JavaScript

js实现四则运算

2026-01-30 20:41:37JavaScript

实现四则运算的基本方法

在JavaScript中实现四则运算(加、减、乘、除)可以通过直接使用运算符或封装函数完成。以下是几种常见实现方式:

直接使用运算符

let a = 10;
let b = 2;

console.log(a + b); // 加法 12
console.log(a - b); // 减法 8
console.log(a * b); // 乘法 20
console.log(a / b); // 除法 5

封装为函数

function calculate(a, b, operator) {
  switch(operator) {
    case '+': return a + b;
    case '-': return a - b;
    case '*': return a * b;
    case '/': return b !== 0 ? a / b : '除数不能为0';
    default: return '无效运算符';
  }
}
console.log(calculate(10, 2, '/')); // 输出5

处理浮点数精度问题

JavaScript的浮点数运算可能存在精度问题,可通过以下方式解决:

使用toFixed方法(注意返回字符串)

let result = 0.1 + 0.2; // 0.30000000000000004
console.log(parseFloat(result.toFixed(1))); // 0.3

放大为整数运算

function add(a, b) {
  const multiplier = Math.pow(10, Math.max(getDecimalLength(a), getDecimalLength(b)));
  return (a * multiplier + b * multiplier) / multiplier;
}

function getDecimalLength(num) {
  return (num.toString().split('.')[1] || '').length;
}

解析数学表达式字符串

若需计算字符串形式的表达式(如"3+5*2"),可通过以下方法实现:

使用eval(注意安全性风险)

let expression = "3+5*2";
console.log(eval(expression)); // 13

安全解析方案(使用Function构造器)

function safeEval(expr) {
  return new Function('return ' + expr)();
}
console.log(safeEval('(2+3)*4')); // 20

实现带优先级的运算

对于需要处理运算符优先级的场景,可参考以下算法思路:

逆波兰表达式算法

function calculate(expression) {
  // 实现中缀表达式转后缀表达式
  // 使用栈处理运算符优先级
  // 计算后缀表达式结果
  // 具体实现需包含完整的词法分析和栈操作
}

第三方库推荐

js实现四则运算

  • math.js:支持复杂表达式和符号计算
  • expr-eval:轻量级表达式求值库
// 使用math.js示例
import * as math from 'mathjs';
console.log(math.evaluate('2 + 3 * (4 - 1)')); // 11

注意事项

  1. 除法运算需处理除零错误
  2. 考虑运算结果的数值范围,避免溢出
  3. 涉及用户输入时应做好输入验证,防止代码注入
  4. 对于金融计算等精度敏感场景,建议使用decimal.js等专业库

标签: js
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…