- 숫자형 변수는 다양한 형태의 숫자를 표현해서 나타내는 값을 말하는 변수로 Javascript에선 숫자의 형태를 구체적으로 나누어 정의하지 않는다. → (특히 Java와 같은 C#, C++ 언어들은 int, float, long, short, byte로 정의해서 숫자를 표현해서 사용한다.)
- 1번째 예제
let integer = 10;
let hex = 0xa;
let binary = 0b1010;
let octal = 0o12;
console.log(integer, hex, binary, octal);
let negative = -10;
let indices = 1.0e1;
let double = 10.02;
console.log(negative, indices, double);
- 첫번째 예제코드를 보면 출력되는 결과에 따라 변수에 할당된 숫자형 값을 가져올때는 변수에 할당할때 마다 숫자 형태에 상관없이 전부 다 10진수 형태로 변환되서 출력됨을 확인할 수 있다.
- 2번째 예제
let IsInfinity = 10 / 0;
console.log(IsInfinity);
let IsNaN = 10 / "칠";
console.log(IsNaN);
- 간혹 숫자형 코드 입력후 콘솔창에 infinity와 NaN과 같은 특수한 표시를 나타내주는 경우도 있는데 infinity, NaN이 대표적이다.
- Javascript 에서는 무한하게 나눠지는 숫자의 경우에는 infinity로 표시하고 숫자가 아닌 “칠” 처럼 일반 글로 표시된 경우에는 연산을 처리하는 과정중 잘못된 입력을 받았기 때문에 NaN으로 표시됨을 알 수 있다.
- 무한(infinity) 사용 예제
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
console.log(Infinity);
console.log(Number.POSITIVE_INFINITY);
console.log(-Infinity);
console.log(Number.NEGATIVE_INFINITY);
- Javascript에서는 다른 언어들에 비해 구체적으로 숫자형식을 정의하지 않기 때문에 모든 숫자를 정확하게 표현할 수 없다. 따라서 표현할 수 있는 숫자의 범위를 넘어가면 무한대(infinity)로 표기해서 숫자를 표현한다
- 사용범위는 Number.MAX_VALUE, Number.MIN_VALUE로 최대, 최소 값을 표시하고 Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY로 양수, 음수의 무한대 값을 가져와 사용범위를 표시할 수 있다.
- NaN 사용 예제
console.log(0 / 0);
console.log(parseInt('a'));
console.log('a' * 0);
console.log(typeof NaN === "number");
- NaN(Not a Number)은 연산과정에서 잘못된 입력값을 받았을때 나타내는 표기를 말하며, 주로 메서드의 잘못된 입력값을 받았을때 반환된다.
- typeof 키워드는 해당 자료형 타입을 어떤 자료형인지 구분할 수 있도록 도와주는 키워드 이며, NaN의 typeof는 number(숫자형 타입변수) 임을 알 수 있다.
- 3번째 예제
let num = 0.1 + 0.2;
console.log(num);
- 다음과 같이 콘솔창에 0.3이 아닌 0.30000000000000004 라고 출력이 되는 것을 확인할 수 있다. 이러한 결과가 나오는 이유는 모든 컴퓨터가 숫자를 저장할때 2진수로 변환해서 저장하게 되는데, 숫자 0.1은 0001100110011…을 계속 반복하며 출력함으로 인해서 유한한 값으로 나누어 떨어지지 않기 때문이다. → (근사치의 값으로 0.1이라는걸 2진수로 저장하게 되고 내부적인 처리방법으로 인해 소수점을 연산할때 종종 근사치의 값으로 나오는 경우가 많다)
- 부동 소수점 예제
let num = 1.0;
console.log(num);
let num2 = 1.;
console.log(num2);
let num3 = .1;
console.log(num3);
let num4 = 1;
console.log(num4);
let num5 = 1.1111111111111111111111111111111111111111111111;
console.log(num5);
- Javascript 에서는 다른 언어들에 비해 소수 연산이 정확하지 않으므로 다양한 방법을 이용해서 계산하지만 소수를 정의하기 위해서 소수점 뒤에 숫자가 없다면 소수점은 무시되고 숫자(정수)로만 표시된다.
- num5 변수처럼 그 이상의 숫자는 반올림 처리됨 (소수는 정수를 포함한 32비트 까지 표현이 가능)