diff --git a/script.js b/script.js new file mode 100644 index 0000000..464ee03 --- /dev/null +++ b/script.js @@ -0,0 +1,88 @@ +let displayValue = '0'; // 显示屏上的内容 +let firstNumber = null; // 第一个数字 +let secondNumber = null; // 第二个数字 +let operation = null; // 运算符 +let waitingForSecondNumber = false; + +// 更新显示 +function updateDisplay() { + const display = document.getElementById('display'); + display.innerText = displayValue; +} + +// 添加数字 +function appendNumber(number) { + if (waitingForSecondNumber) { + displayValue = number.toString(); + waitingForSecondNumber = false; + } else { + displayValue = displayValue === '0' ? number.toString() : displayValue + number.toString(); + } + updateDisplay(); +} + +// 设置运算符 +function setOperation(op) { + if (firstNumber === null) { + firstNumber = parseFloat(displayValue); + } else if (operation) { + secondNumber = parseFloat(displayValue); + firstNumber = performCalculation(firstNumber, secondNumber, operation); + displayValue = firstNumber.toString(); + updateDisplay(); + } + operation = op; + waitingForSecondNumber = true; +} + +// 计算结果 +function calculate() { + if (operation && !waitingForSecondNumber) { + secondNumber = parseFloat(displayValue); + displayValue = performCalculation(firstNumber, secondNumber, operation).toString(); + firstNumber = null; + secondNumber = null; + operation = null; + updateDisplay(); + } +} + +// 执行计算 +function performCalculation(num1, num2, operator) { + switch (operator) { + case '+': + return num1 + num2; + case '-': + return num1 - num2; + case '*': + return num1 * num2; + case '/': + return num2 !== 0 ? num1 / num2 : '错误'; + default: + return num2; + } +} + +// 百分号处理 +function percent() { + displayValue = (parseFloat(displayValue) / 100).toString(); + updateDisplay(); +} + +// 添加小数点 +function appendSymbol(symbol) { + if (!displayValue.includes(symbol)) { + displayValue += symbol; + updateDisplay(); + } +} + +// 清除显示 +function clearDisplay() { + displayValue = '0'; + firstNumber = null; + secondNumber = null; + operation = null; + waitingForSecondNumber = false; + updateDisplay(); +}