NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    JavaScript 자바스크립트 기초 - 수 (Numbers)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 회사에서 내년 차세대 제품은 뷰(Vue)를 사용하기로 결정 되었습니다. 지금까지 앵귤러(Angular)를 사용했었는데요. 일부 프로젝트는 리액트(React)로 되어있기도 합니다. 아무튼, 차세대 제품(MES, EES)은 뷰로 개발해야 하기 때문에 학습에 필요한 자바스크립트를 리마인드해야 합니다. 사실, 자바스크립트를 오랜 시간 사용해왔기 때문에 리마인드가 필요하진 않지만 기록하는 차원에서 기초부터 작성해보기로 했습니다^^;

     

    자바스크립트 기초 학습 또는 간단한 테스트는 메모장이나 [ JSFiddle - Code Playground ]를 사용합니다. 하지만, 제품을 만드는 경우 Visual Studio Code(VS Code)를 이용하는게 좋습니다. 구글 크롬을 실행하고, JSFiddle 사이트에 들어가세요.

     

    수 (Numbers)

    자바스크립트의 수는 "이중정밀도 64비트 형식 IEEE 754" 값 (numbers between - (2^53-1) and 2^53-1)으로 정의됩니다. 자바스크립트는 정수가 존재하지 않기 때문에 코딩할 때 이런 부분들을 조심해야 합니다. 컴파일 언어들(C, C++, C#등등...)은 수 형식(Number Type)이 정해져 있기 때문에 문제가 되지 않습니다. 아래 코드를 작성하고 실행(Run) 해보세요. 우측 하단의 콘솔에 결과가 표시됩니다.

    XtCenWz.png

     

     

    정수 개념이 없기 때문에 Math 클래스를 사용하지 않으면 정수를 표현할 방법이 없습니다. 그리고, 아래와 같은 연산은 조심해야 합니다. 제가 일하는 반도체 산업군은 소수점 14자리까지 정밀도가 요구되는 센서 값을 사용합니다. 그런데, 아래 결과를 보면 좌항과 우항이 같다(True)라고 판단합니다. 빅데이타 분석 알고리즘을 돌릴 때 이런 작은 차이가 결과값에 미치는 영향이 클 수 있습니다.

    ※ Ceil: 올림, Floor: 내림, Round: 반올림

    vSdwPXh.png

     

     

    웹은 대부분 사이트 또는 서비스에 이용되다보니 이런 문제를 겪을일이 많지 않습니다. 하지만, 서버쪽에서 계산하는 Java의 경우 부동소수점을 사용하면 문제가 되기도 합니다. 아무튼, 자바스크립트는 정수 값이 32비트로 처리되며 일부 구현은 32비트 정수가 아닌 숫자에 유효한 명령어를 수행할 때까지 이런 방식으로 저장합니다. 비트 단위 작업에서 중요한 문제라 유의해야 합니다.

     

    내장 parseInt() 함수를 사용하여 문자를 정수로 변환할 수 있습니다.

    v5W7zEJ.png

     

     

    구형 브라우저에서 0으로 시작하는 문자열은 8진수로 가정되지만, 2013년 이후에는 그렇지 않습니다. 문자열 형식이 확실하지 않으면 이전 브라우저에서 놀라운 결과를 얻을 수 있습니다. 구형 브라우저가 없어서 결과값이 8로 나오는지는 확인할 수 없습니다. 지금은 불필요한 내용이니 그냥 건너뛰면 됩니다 ㅎㅎ; 예전에 이런 문제가 발생된 원인은 0x로 시작하는 진수 계산에 변화 때문입니다. 이전에는 8진수였지만, 지금은 16진수로 처리합니다.

    GZeOcPs.png

     

     

    만약, 이진수를 정수로 변환하고 싶다면, 밑을 바꾸기만하면 됩니다.

    0rvvtv6.png

     

     

    단항 연산자(+)를 사용하여 값을 숫자로 변환할 수도 있습니다. 컴파일 언어들에서는 상상도 할 수 없는 것들을 자바스크립트는 해냅니다.

    7DJNYF7.png

     

     

    문자열이 수가 아닌 경우 NaN(Not a Number)이라고 불리는 특별한 값을 반환합니다. NaN은 ""이라고 부릅니다. 웹개발자가 자주하는 실수이기도 하고, 자주보는 값이기도 합니다. NaN은 연산에서 주의해야 합니다. 어떤 수학 연산의 입력값으로 주어지면 그 결과 또한 NaN이 되기 때문입니다.

    qAYKvfW.png

     

     

    내장 Number.isNaN() 함수를 사용해서 NaN 여부를 안정적으로 검사할 수 있습니다. 하지만, 직관적이지 않은 전역 isNaN() 함수는 사용하지 마세요. 결과가 달라지는 문제가 있습니다.

    T1flzNZ.png

     

     

    자바스크립트는 NaN 이외에 Infinity와 -Infinity라는 특별한 값을 가지고 있습니다. NaN과 동일하게 isFinite() 함수를 사용해서 Infinity와 NaN을 확인할 수 있습니다.

    5f24kCa.png

     

     

    다음에는 자바스크립트에서 문자열에 대해 알아보도록 하겠습니다. Java나 C#의 정수, 실수가 궁금하시면 아래 학습 내용을 참고 해보세요.

    [ 자바 학습하기 ]

    [ C# 학습하기 ]

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.