/* eslint-disable */ // 四则运算 !(function () { var calculate = function (s) { s = s.trim(); const stack = new Array(); let preSign = '+'; let numStr = ''; const n = s.length; for (let i = 0; i < n; ++i) { if (s[i] === '.' || (!isNaN(Number(s[i])) && s[i] !== ' ')) { numStr += s[i]; } else if (s[i] === '(') { let isClose = 1; let j = i; while (isClose > 0) { j += 1; if (s[j] === '(') isClose += 1; if (s[j] === ')') isClose -= 1; } numStr = `${calculate(s.slice(i + 1, j))}`; i = j; } if ((isNaN(Number(s[i])) && s[i] !== '.') || i === n - 1) { let num = parseFloat(numStr); switch (preSign) { case '+': stack.push(num); break; case '-': stack.push(-num); break; case '*': stack.push(stack.pop() * num); break; case '/': stack.push(stack.pop() / num); break; default: break; } preSign = s[i]; numStr = ''; } } let ans = 0; while (stack.length) { ans += stack.pop(); } return ans; }; module.exports = calculate; })();