LHJ

I'm a FE developer.

2-6. 기본 문법 / 정수, 실수, 숫자 처리

14 Nov 2020 » js_beginner

11. 정수, 실수, 숫자 처리

  • 정수

    • 소수가 없는 숫자
    • 123, -123

  • 실수

    • 소수를 가진 숫자
    • 1.23, 1.0

  • JS는 정수, 실수를 구분하지 않음

    • 1, 1., 1.0 모두 1.0으로 간주
      단, 표시는 1로 표시

        console.log(1);         // 1
        console.log(1.);        // 1
        console.log(1.0);       // 1
        console.log(1.00001);   // 1.00001
      

숫자 처리

  • 정수와 실수를 구분하지 않음

    • 64비트(bit) 부동 소수점 처리

      • 비트는 0과 1의 값만을 가집니다.
      • 이런 0과 1의 값을 갖는 bit를 64개를 사용해 값을 처리합니다. 1도 64비트를 사용한 것이고 1억도 64비트를 사용하고 100억, 1000억도 64비트를 사용합니다.
      • 그래서 값이 클 때는 효율이 있지만 값이 1이라면(0과 1은 1비트이다.) 비트 한개만 있어도 되는데, 64개를 사용하게되므로 loss(손실)이 발생합니다.
      • 그러나 IEEE 754 표준을 준수하기 때문에 어쩔수가 없습니다.
    • IEEE 754 표준


  • 부동 소수점 처리란?

    • 123을 123.0으로 처리

      • 즉 정수를 실수로 처리하는 방법입니다.
      • 그래서 자바스크립트는 정수와 실수를 구분하지 않습니다.
console.log(.123);
console.log(0.12 + 5);
  1. .123처럼 소수점 앞에 값을 작성하지 않으면 0을 붙여 0.123으로 사용합니다.
  2. 정수와 실수를 구분하는 언어에서는 실수(0.12)와 정수(5)를 더할 수 없으며
  3. 정수를 실수(5.0)로 변환하여 더해야 합니다.
  4. JS는 정수와 실수를 구분하지 않고 실수로 계산합니다.

C++과 JAVA 등 이런 언어는 정수와 실수를 구분하여 선언할 수 있습니다.
정수를 선언했으면 해당 변수엔 실수값을 할당할 수 없고 실수 변수를 선언했으면 해당 변수엔 정수값을 할당할 수 없습니다.

자바스크립트 숫자는 이런 면에서 자유롭습니다.
이러한 특징이 장점이될 수도 있고, 단점이 될 수도 있습니다.


  • ES6에 정수, 실수 구분 추가

    • ES6에 정수 또는 실수를 구분하여 정수, 실수만을 다룰 수 있는 방법이 등장했습니다.