-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
112 lines (102 loc) · 3.14 KB
/
app.js
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
function deletecomma(number) {
return number.replace(/,/g, "");
}
function displaytoFixed(number) {
number = String(Number(number).toFixed(10));
const decimal = Math.abs(Number(number) - parseInt(number));
if (decimal > 0 && decimal < 1) {
const numberlength = Math.max(0, 10 - (number.length - 12));
number = String(Number(number).toFixed(numberlength));
return String(number);
} else {
return String(parseInt(number));
}
}
function displayNumber(number) {
number = displaytoFixed(number);
number = parseFloat(number);
// 숫자 3자리마다 콤마 찍기
number = number.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");
if (number.length <= 8) {
display.style.fontSize = "80px";
} else if (number.length <= 10) {
display.style.fontSize = "65px";
} else if (number.length <= 13) {
display.style.fontSize = "50px";
} else {
//글자길이가 11이상 10^10이상인 경우
number = deletecomma(number);
a = (Number(number) / 10 ** (String(parseInt(number)).length - 1)).toFixed(
6
);
b = String(parseInt(number)).length - 1;
number = `${a}e${b}`;
display.style.fontSize = "50px";
}
display.innerHTML = number;
}
function allclear() {
num1 = 0;
num2 = "";
oper = "+";
displayNumber(num1);
previousKey = "clear";
etc[0].innerHTML = "AC";
}
function calculate() {}
function inputNumber(event) {
if (!num2 && event.target.innerText === ".") {
num2 = "0.";
} else if (num2.includes(".") && event.target.innerText === ".") {
num2 = num2;
} else if (previousKey !== "calculate" && num2 !== "") {
num2 += event.target.innerText;
} else {
num2 = event.target.innerText;
}
previousKey = "number";
displayNumber(num2);
etc[0].innerHTML = "C";
}
function inputOperator(event) {
if (previousKey !== "operator" && oper === "+") {
num1 = num1 + Number(num2);
} else if (previousKey !== "operator" && oper === "−") {
num1 = num1 - Number(num2);
} else if (previousKey !== "operator" && oper === "×") {
num1 = num1 * Number(num2);
} else if (previousKey !== "operator" && oper === "÷") {
num1 = num1 / Number(num2);
}
displayNumber(num1);
num2 = "";
if (event.target.innerText !== "=") {
oper = event.target.innerText;
}
previousKey = "operator";
}
function inputEtc(event) {
const etc = event.target.innerText;
if (etc === "AC" || etc === "C") {
allclear();
} else if (etc === "+/−") {
num2 = deletecomma(num2);
num2 = String(Number(num2) * -1);
displayNumber(num2);
} else if (etc === "%") {
num2 = deletecomma(num2);
num2 = String(Number(num2) / 100);
displayNumber(num2);
}
}
const num = document.querySelectorAll(".number");
const operator = document.querySelectorAll(".operator");
const etc = document.querySelectorAll(".allclear");
const display = document.getElementById("display");
let num1 = 0;
let num2 = "";
let oper = "+";
let previousKey = "clear";
num.forEach((element) => element.addEventListener("click", inputNumber));
operator.forEach((element) => element.addEventListener("click", inputOperator));
etc.forEach((element) => element.addEventListener("click", inputEtc));