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 표준을 준수하기 때문에 어쩔수가 없습니다.
부동 소수점 처리란?
123을 123.0으로 처리
- 즉 정수를 실수로 처리하는 방법입니다.
- 그래서 자바스크립트는 정수와 실수를 구분하지 않습니다.
console.log(.123);
console.log(0.12 + 5);
.123
처럼 소수점 앞에 값을 작성하지 않으면 0을 붙여 0.123으로 사용합니다.- 정수와 실수를 구분하는 언어에서는 실수(0.12)와 정수(5)를 더할 수 없으며
- 정수를 실수(5.0)로 변환하여 더해야 합니다.
- JS는 정수와 실수를 구분하지 않고 실수로 계산합니다.
C++과 JAVA 등 이런 언어는 정수와 실수를 구분하여 선언할 수 있습니다.
정수를 선언했으면 해당 변수엔 실수값을 할당할 수 없고 실수 변수를 선언했으면 해당 변수엔 정수값을 할당할 수 없습니다.
자바스크립트 숫자는 이런 면에서 자유롭습니다.
이러한 특징이 장점이될 수도 있고, 단점이 될 수도 있습니다.
ES6에 정수, 실수 구분 추가
- ES6에 정수 또는 실수를 구분하여 정수, 실수만을 다룰 수 있는 방법이 등장했습니다.