function precedence(operator) {
if (operator === '+' || operator === '-') return 1;
if (operator === '*' || operator === '/') return 2;
return 0;
}
function applyOperator(values, operators) {
const right = values.pop();
const left = values.pop();
const op = operators.pop();
switch (op) {
case '+':
return left + right;
case '-':
return left - right;
case '*':
return left * right;
case '/':
return left / right;
}
}
function evaluateExpression(expression) {
const values = [];
const operators = [];
const tokens = expression.split(' ');
for (let i = 0; i < tokens.length; i++) {
if (tokens[i] ==='') continue;
else if (!isNaN(Number(tokens[i]))) {
values.push(Number(tokens[i]));
} else if (tokens[i] === '(') {
operators.push(tokens[i]);
} else if (tokens[i] === ')') {
while (operators.length > 0 && operators[operators.length - 1]!== '(') {
const result = applyOperator(values, operators);
values.push(result);
}
operators.pop(); // 弹出 '('
} else {
while (operators.length > 0 && precedence(operators[operators.length - 1]) >= precedence(tokens[i])) {
const result = applyOperator(values, operators);
values.push(result);
}
operators.push(tokens[i]);
}
}
while (operators.length > 0) {
const result = applyOperator(values, operators);
values.push(result);
}
return values[0];
}
function main() {
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('请输入计提公式(只包含 +、-、*、/ 的非负整数运算表达式,整数和运算符用空格分隔):', (input) => {
if (input === '0') {
rl.close();
} else {
const result = evaluateExpression(input);
console.log(result.toFixed(2));
}
});
}
main();