-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy paththeJavaScript.js
More file actions
83 lines (75 loc) · 2.17 KB
/
Copy paththeJavaScript.js
File metadata and controls
83 lines (75 loc) · 2.17 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
"use strict";
let firstNumber;
let operation;
let secondNumber;
let hasDecimalPoint;
let activeNumber;
let numberOfCharacters;
function checkIfTooLong() {
return !(numberOfCharacters >= 17 || firstNumber.length >= 15);
}
function autoUpdate() {
if(operation==='') {
firstNumber = activeNumber;
} else {
secondNumber = activeNumber;
}
numberOfCharacters = firstNumber.length + operation.length + secondNumber.length;
}
function updateDisplay() {
if(operation==='') {
document.getElementById('display').innerHTML = firstNumber; // Cache retrieved DOM elements. DOM queries are expensive
} else {
document.getElementById('display').innerHTML = firstNumber + ' ' + operation + ' ' + secondNumber;
}
}
function calculate() {
firstNumber = String(eval(firstNumber + operation + secondNumber)); // eval is dangerous, generally
operation = '';
secondNumber = '';
if (firstNumber.length > 15) {
firstNumber = String(Number(firstNumber).toPrecision(10)); // Avoid setting a value twice, if once would suffice
}
hasDecimalPoint = firstNumber.includes('.');
activeNumber = firstNumber;
updateDisplay();
}
function clearString() {
firstNumber = '0';
operation = '';
secondNumber = '';
hasDecimalPoint = false;
activeNumber = firstNumber;
numberOfCharacters = firstNumber.length + operation.length + secondNumber.length;
updateDisplay();
}
function addNumber(character) {
if(activeNumber==='0') {
activeNumber = character;
} else if(checkIfTooLong()) {
activeNumber += character;
}
autoUpdate();
updateDisplay();
}
function addOperation(character) {
if(operation!=='') {
calculate();
}
operation = character;
secondNumber = '0';
hasDecimalPoint = false;
activeNumber = '0';
updateDisplay();
}
function addDecimalPoint() {
if (checkIfTooLong()) {
if(hasDecimalPoint==false) {
activeNumber += '.';
hasDecimalPoint = true;
autoUpdate();
updateDisplay();
}
}
}
clearString();