-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
89 lines (78 loc) · 1.87 KB
/
script.js
File metadata and controls
89 lines (78 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
const display = document.getElementById("display");
const expressionDisplay = document.getElementById("expression");
let currentInput = "";
let operator = "";
let previousInput = "";
function updateDisplay(value) {
display.textContent = value;
}
function updateExpression() {
expressionDisplay.textContent = `${previousInput} ${operator}`;
}
function appendNumber(num) {
if (num === "." && currentInput.includes(".")) return;
currentInput += num;
updateDisplay(currentInput);
}
function appendOperator(op) {
if (currentInput === "" && previousInput === "") return;
if (currentInput === "") {
operator = op;
updateExpression();
return;
}
if (previousInput !== "") {
calculate();
}
operator = op;
previousInput = currentInput;
currentInput = "";
updateExpression();
}
function formatResult(result) {
return parseFloat(result.toFixed(2)).toString();
}
function calculate() {
let result;
const prev = parseFloat(previousInput);
const curr = parseFloat(currentInput);
if (isNaN(prev) || isNaN(curr)) return;
switch (operator) {
case "+":
result = prev + curr;
break;
case "-":
result = prev - curr;
break;
case "×":
result = prev * curr;
break;
case "÷":
result = curr === 0 ? "Error" : prev / curr;
break;
case "%":
result = prev % curr;
break;
default:
return;
}
if (result !== "Error") result = formatResult(result);
updateDisplay(result);
expressionDisplay.textContent = "";
currentInput = result.toString();
previousInput = "";
operator = "";
}
function clearDisplay() {
currentInput = "";
previousInput = "";
operator = "";
updateDisplay("0");
expressionDisplay.textContent = "";
}
function toggleSign() {
if (currentInput !== "") {
currentInput = (-parseFloat(currentInput)).toString();
updateDisplay(currentInput);
}
}