JavaScript

숫자

마라랑랑 2022. 5. 24. 06:39

숫자 리터럴

35;
3.141;
0xff;   255
5e2;    500

숫자 리터럴 표현식들

const num = 123.111;
num.toFixed;    '123'

new Number(123);

 

 

Number(undefined);	NaN
Number(null);		0
Number('');		0	
Number('String');	NaN
Number(true);		1
Number(false);		0	
Number(3.141592);	3.141592

숫자로 변환시 나타내는 값들을 알 수 있다.

 

if (1 == true) {
	console.log('참');
}

느슨한 검사(eqeq)를 통하여 참인지 알 수 있는 방법도 있지만 추천하지 않는다.

 

console.log(+true);	1
console.log(+false);	0

이런식으로 표현 가능하지만 추천하지는 않는다.

 

const strNumber = '11111';

if (Number(strNumber)) {
	console.log('실행');	실행
}

위와 같이 Number() 을 사용해서 명시적으로 변환하는 것을 추천한다.

 

Not a Number

 Not a Number => 숫자가 아니다
  - NaN
  - Number.NaN
 
Number(undefined);				NaN
parseInt('숫자로 변환 불가능한 문자열');		NaN
Math.log(-1);					NaN
10 + NaN;					NaN
'가나다라' / 10;					NaN

parseInt() 정수로 변환하는 메소드

논리적으로 숫자가 될 수 없는 것들은 NaN으로 표기된다.

문자열과 숫자열의 연산은 + 만 가능하다.

 

Infinity

 
- 너무 크거나 작다
- 지수 1023까지 허용
isFinite(Math.pow(2, 1024));     Infinity
7 / 0;    			 Infinity

isFinite(Infinity);   		 false
isFinite(NaN);  		 false
isFinite(19);   		 true

isFinite() 를 사용하여 infinity인지 구분가능하다.

정상적인 숫자일 경우 true, infinity일 경우 false를 반환

 

 

Bigint

안정적인 범위의 정수

BigInt 원시 값이 안정적으로 나타낼 수 있는 최대치인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체이다.

Number.Max_VALUE 자바스크립트가 표현할 수 있는 가장 큰 양싀 숫자 값

 

BigInt는 internet Explorer에서 동작하지 않는다.

 

console.log(123123123123123123123123123123123n);
console.log(
	BigInt(123123123123123123123123123123123),
);

Bigint를 사용하면 굉장히 큰 숫자도 호환해서 사용가능하다.

위와 같이 뒤에 n을 쓰거나 BigInt() 안에 숫자를 넣어준다ㅇㄴㅁㅇ

 

정수

- 자바스크립트에는 부동소수점(IEEE-754) 숫자만 존재 

- 정수를 저장하는 2가지 방법 

1. 10진 소수가 없는 작은 숫자는 정수로 오래 유지 (예. 31비트) 

2. 비트 연산자를 이용 32비트 정수로 바꿔 반환

 

// 안전한 정수의 최대 값
Number.MAX_SAFE_INTEGER;	9007199254740991
// 안전한 정수의 최소 값
Number.MIN_SAFE_INTEGER;	-9007199254740991

Math.floor(4);		4
Math.ceil(4.9);		5
Math.round(4.6);	5

floor 가장 가까운 정수로 내림

ceil 가장 가까운 정수로 올림

round 가장 가까운 정수로 반올림

 

parseInt(undefined, '필수');
parseInt('10', '필수');
Number('10');

parseInt() 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환한다.

 

function parseInt2(value, radix) {
	if (radix === undefined) {
		return Number(value);
	}

	return; // some code
}

radix는 선택적인 매개변수이기 때문에 10진수가 아닐 수 있다.

parseInt(value, radix) 를 사용할때에는 두번째 인자에 몇 진수인지 꼭 넘겨줘야한다.

 

산술연산자

1 + 1; 2
2 - 1;  1
10 / 5; 2
10 % 2; 0
2 * 2;  4

+ - / * %

let x = 5;
++x;    6
--x;	5
let y = 5;
y++;	5
y;	6
y--;	6
y;	5

++x; 사용시 x값이 +1이 되며 더한 값을 반환하고

x++; 사용시 +1의 값이 +1 되지만 값은 본래 값을 반환한다

 

 

console.log(3 + (10 * 2));
console.log((3 + 10) * 2);

const isTicketPrice = 3 + 10

if (3 + (10 * 2)) {

}
if (isTicketPrice * 2) {
}

산술 연산자는 우선순위가 있으므로 괄호를 사용하여 자신과 동료가 알기 편하게 해야한다.

 

Not a Number 판별

* 숫자로 읽어낼 수 없다.

* 잘못된 계산 결과식

* 정의할 수 없는 결과식

* 문자열이 포함된 계산식 (덧셈 제외)

// 느슨하게 검사
isNaN(undefined);	true
isNaN({});		true
isNaN('문자열');		true

// 엄격하게 검사
Number.isNaN(undefined);	false
Number.isNaN({});		false
Number.isNaN('문자열');		false

Number.isNaN 이 엄격한 검사이기 때문에 좀더 신뢰성이 높다