-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
빼기 마이너스 / 연속계산 질문있습니다.
24.04.01 18:47 작성 조회수 91
0
let num1;
let num2;
let op;
let cal;
let minus = 1;
function onClickNumber(e) {
if(!op) {
$result.value += e.target.textContent * minus;
num1 = parseInt($result.value);
minus = 1;
} else {
$result.value += e.target.textContent * minus;
num2 = parseInt($result.value);
minsu = 1;
}
}
function operator(e) {
if (num2) {
switch(op) {
case '+' :
$result.value = num1 + num2;
break;
case '-' :
$result.value = num1 - num2;
break;
case 'x' :
$result.value = num1 * num2;
break;
case '/' :
$result.value = num1 / num2;
break;
}
num1 = $result.value;
num2 = '';
minus = 1;
}
if (num1 && !op) {
$operator.value = e.target.textContent;
op = $operator.value;
$result.value = '';
}
if (!num1 && e.target.textContent === '-') {
return minus = -1;
}
if (op && !num2 && e.target.textContent === '-') {
return minus = -1;
}
}
마이너스 구현은 됐는데
빼기 할 때, 마이너스가 같이 나와요. 조건을 추가해서 더 넣어봤는데 그러면 다른 기능이 작동하질 않네요...
연속계산은 잘 되다가 마이너스 구현 이후로 작동이 안 되네요.
이 강좌 이후에 해설 있나요?
답변을 작성해보세요.
0
조현영
지식공유자2024.04.01
minsu = 1;
일단 이건 오타이고요.
빼기할 때 마이너스가 같이나온다는게 결과창에서 같이 나온다는 의미인가요?
정확한 순서와 결과를 알려주세요.
현대적인유교보이
질문자2024.04.02
넵 맞습니다. 저 위 코드에 문제가 없다면 다른 부분에 오류가 있나 보네요.. 다른 부분 고쳐보겠습니다. 그리고 음수 접근법(minus 변수 추가)은 괜찮은 방법인지 궁금합니다.
조현영
지식공유자2024.04.02
$result.value를 바꿀 때만 결과창 칸이 바뀌어야 하는데 이상해서요.
minus 변수 추가는 괜찮은데 $result.value에 넣을 때 마지막에 * minus를 하는 대신 앞에 -를 붙일지 말지만 minus로 결정하는 게 낫지 않나 싶습니다.
현대적인유교보이
질문자2024.04.02
음수 변환 해결했습니다!
근데 연속 계산이 안 되네요..
if (num1 && !op) { $operator.value = e.target.textContent; op = $operator.value; $result.value = ''; }
&& !op
이 조건 때문에 넘어가지 않네요. 없애면 연속 계산은 되는데 두번째 값 음수 적용이 안 되고 붙이면 두번째 값 음수 적용은 되지만 연속 계산이 안 되는 루프에 갖혔습니다..
if (num2)
문에 return 값을 넣어서 minus = 2라는 조건도 만들어 봤는데 이건 연산자를 두번 클릭을 해야 작동돼서 애매하네요..
조현영
지식공유자2024.04.02
다음 링크는 마이너스 부분은 없는 연속계산 코드입니다. 참고해보세요.
https://github.com/ZeroCho/es2024-webgame/blob/main/calculator-self.html
연속계산의 핵심은 onClickOperator에서 numTwo가 있을때 연산자를 클릭한 경우 calculate를 호출하는 겁니다.
답변 1