diff --git a/index.html b/index.html
index 5f092c5..2d2c8f5 100644
--- a/index.html
+++ b/index.html
@@ -79,6 +79,12 @@
|
+
+ |
+ |
+ |
+ |
+
|
|
diff --git a/scripts/calc.js b/scripts/calc.js
index 9acd640..0e7aa4b 100644
--- a/scripts/calc.js
+++ b/scripts/calc.js
@@ -19,7 +19,38 @@ let isSign = true;
for (item of buttons) {
item.addEventListener("click", (e) => {
buttonText = e.target.innerText;
- if (buttonText == "X" && !isSign) {
+
+ // 根号功能
+ if (buttonText == "√" && !isSign) {
+ if (flag == 1) {
+ flag = 0;
+ }
+ screenValue = Math.sqrt(eval(screen.value));
+ screen.value = screenValue;
+ }
+
+ // sin, cos, tan 功能
+ else if (buttonText == "sin" || buttonText == "cos" || buttonText == "tan") {
+ if (flag == 1) {
+ flag = 0;
+ }
+ let angle = eval(screen.value);
+ let result;
+
+ if (buttonText == "sin") {
+ result = Math.sin(toRadians(angle));
+ } else if (buttonText == "cos") {
+ result = Math.cos(toRadians(angle));
+ } else if (buttonText == "tan") {
+ result = Math.tan(toRadians(angle));
+ }
+
+ screenValue = result;
+ screen.value = screenValue;
+ }
+
+ // 其他按钮处理
+ else if (buttonText == "X" && !isSign) {
if (flag == 1) {
flag = 0;
}
@@ -42,14 +73,13 @@ for (item of buttons) {
} else {
screen.classList.remove("negative");
}
- } else if(buttonText=="(" || buttonText==")") {
- if(flag==1){
- flag =0;
+ } else if (buttonText == "(" || buttonText == ")") {
+ if (flag == 1) {
+ flag = 0;
}
- screenValue+=buttonText;
- screen.value=screenValue;
- }
- else if (isNumber(buttonText)) {
+ screenValue += buttonText;
+ screen.value = screenValue;
+ } else if (isNumber(buttonText)) {
if (flag == 1) {
screenValue = buttonText;
flag = 0;
@@ -85,19 +115,15 @@ window.onerror = function () {
console.clear();
};
-// ... (same code as before)
-
function checkForBracketMulti() {
- // ... (same code as before)
-
+ // Check for potential multiple operations after brackets and eval expression.
if (eval(screenValue) !== undefined) {
- if (!Number.isInteger(eval(screenValue))){
- screen.value = eval(screenValue).toFixed(2);
- }
- else {
+ if (!Number.isInteger(eval(screenValue))) {
+ screen.value = eval(screenValue).toFixed(2);
+ } else {
screen.value = eval(screenValue);
}
-
+
lastScreenValue = screenValue;
screenValue = screen.value;
if (parseFloat(screen.value) < 0) {
@@ -105,7 +131,11 @@ function checkForBracketMulti() {
} else {
screen.classList.remove("negative");
}
- // ... (same code as before)
}
flag = 1;
}
+
+// 将角度转换为弧度
+function toRadians(degrees) {
+ return degrees * (Math.PI / 180);
+}