ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JavaScript 입문 : 연산자 우선순위, 소수점 계산
    컴퓨터 알아가기/JavaScript 2021. 10. 29. 19:30
    728x90
    반응형

    본 글은 제로초 TV, 모던 자바스크립트, JavaScript MDN을 기본으로 하고 있습니다. 

    "지치지말고 자신이 하고 싶은 일을 해 나가자. 비록 지금 이순간 힘들더라도"

     

    1. 연산자 우선순위

     

    모든 프로그램의 기본은 일반적 규칙에 따른다고 생각하면 됩니다. 특히 연산을 할 때 기본적인 수학에서 사용하는 우선순위랑 같습니다. 예를 들어 덧셈, 뺄셈 보다는 곱하기, 나누기를 먼저 해야겠죠. 상식적으로 생각하면 될 것 같습니다. 프로그램밍 언어와 일반적 학문에서 사용하는 방식이 다르면 심각한 문제가 발생될 수 밖에 없겠죠.

     

    다음 그림에서 보면 이해가 쉬울 듯 합니다. 

     

     

    모든 연산에서 우선시되는 규칙이 괄호를 사용하는 경우입니다. 단, 주의할 점은 자바스크립트에서는 중괄호와 대괄호는 다른 의미로 사용 된다고 합니다. 수칙연산에서는 괄호로 우선순위를 사용하면 되겠습니다. 

     

    ☞ 연습문제

     

    제로초 TV에서 흥미를 잃을까봐 퀴즈를 내었네요. 앞으로 가면서 여러곳에서 많은 응용문제를 풀어봐야 겠습니다. 

     

    Q) 3 ** 2 + 1의 답을 27로 만드세요.

     

    원래 답을 계산해 보면 3 ** 2는 3의 2제곱이므로 9고 9 + 1은 10이 답이어야 합니다. 이 답을 27로 만들기 위해서는 간단히 생각해도 답은 나오지만 수학적 사고를 알려 드리기 위하여 9 곱하기 3은 27이니 곧 3 곱하기 3곱하기 3으로 인수분해가 되는군요.

     

    A) 정답은 3 ** (2 + 1) 이 되겠네요. 즉, 3의 3제곱이 27이 나오니까요.

     

     

    2. 소수점 계산

     

    컴퓨터는 2진법으로 구성이 되어 있기 때문에 소수점 계산을 직접하게 되면 계산이 정확하게 나오지 않는 경우가 있습니다. 정수의 경우는 상관이 없는데 소수점을 사용하는 실수의 경우 우리가 아는 수학적 연산이 되지 않고 가장 가까운 근사치의 값으로 표현이 일부의 경우에서 나타나게 됩니다. 이를 부동소수점(floating point) 이라고도 불리는데 이럴 경우 정수화 시켜서 계산을  해야합니다. 

     

     

    여러가지 경우의 수를 입력해보니 소수점 계산중에서 0.1이나 0.01 등 1과 관련된 연산이 되는 일부의 경우에서 부동소수점 표시 방식이 나타납니다. 

     

    이럴 경우 정수화 시켜서 계산을 하면 될 것 같습니다. 간단히 0.1 + 0.2을 정수화시켜서 답이 0.3가 나오도록 해 보겠습니다. 

     

     

    결론적으로 소수점에 10을 곱해 정수화 시켜서 계산을 한 후 다시 10으로 나누어 줬습니다. 어떤 소수 계산이 부동형소수로 나올지 아직 우리는 알 수 없기에 모든 소수점 계산은 정수형화 시켜서 계산을 해야 겠습니다. 분명 나중에 좀 더 능숙해지면 여러가지 효과적으로 계산하는 방식이 있겠죠.

     

     

    반응형

    댓글

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Designed by Tistory.