当前位置:首页 > 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方法(注意返回字符串)

js实现四则运算

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(注意安全性风险)

js实现四则运算

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) {
  // 实现中缀表达式转后缀表达式
  // 使用栈处理运算符优先级
  // 计算后缀表达式结果
  // 具体实现需包含完整的词法分析和栈操作
}

第三方库推荐

  • 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实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…