js实现四则运算
实现四则运算的基本方法
在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) {
// 实现中缀表达式转后缀表达式
// 使用栈处理运算符优先级
// 计算后缀表达式结果
// 具体实现需包含完整的词法分析和栈操作
}
第三方库推荐
- math.js:支持复杂表达式和符号计算
- expr-eval:轻量级表达式求值库
// 使用math.js示例
import * as math from 'mathjs';
console.log(math.evaluate('2 + 3 * (4 - 1)')); // 11
注意事项
- 除法运算需处理除零错误
- 考虑运算结果的数值范围,避免溢出
- 涉及用户输入时应做好输入验证,防止代码注入
- 对于金融计算等精度敏感场景,建议使用decimal.js等专业库






