dolog

숫자형 2 본문

JavaScript/자료구조와 자료형

숫자형 2

dokite 2022. 7. 28. 01:22

isNaN 과 isFinite

 

비정상적인 숫자)

Infinity 또는 -Infinity : 어떤 숫자보다 크거나 혹은 작은 특수 숫자 값 

NaN : 에러를 나타내는 값

 

정상적인 숫자와 구분하기 위한 특별한 함수가 바로 isNaN 와 isFinite

 

  • isNaN : 인수를 숫자로 변환한 다음 NaN인지 테스트함

 

console.log(isNaN(NaN)); // true

console.log(isNaN(“str”)); // true

 

=== 으로 비교시, NaN은 자신을 포함하여 그 어떤 값과 일치 하지 않기 때문이다

 

console.log(NaN === NaN); // false

 

  • isFinite : 인수를 숫자로 변환하고 변환한 숫자가 일반 숫자인 경우 true를 반환

ㄴ NaN / Infinity / -Infinity 는 false

 

console.log(isFinite(“15”)); // true

console.log(isFinite(“str”)); // false

console.log(isFinite(Infinity)); // false

 

isFinite는 문자열이 일반 숫자인지 검증하는 데 사용되곤 한다

 

let num = +prompt(“Enter to number”, ‘’);

 

console.log(isFinite(num)); // 숫자 입력시, true

 

또한 빈 문자열, 공백만 있는 문자열은 isFinite를 포함한 모든 숫자 관련 내장 함수에서 0으로 취급된다

 

Object.is 와 비교하기(= SameValue 비교 방식)

  • 아래 케이스를 제외하고 Object.is(a, b)와 (a === b)는 같다
  • === 보다 신뢰할만한 결과를 보여줄 때(비교 결과가 정확해야 할 때)

 

  1. NaN을 대상으로 비교할 때 : Object.is(NaN, NaN) === true
  2. 0과 -0이 다르게 취급되어야 할 때 : Object.is(0, -0) === false

➡️ 숫자를 나타내는 비트는 같지만 부호를 나타내는 비트가 다르기 때문

 

parseInt와 parseFloat

 

단항 덧셈 연산자 + 또는 Number() 사용하여 숫자형으로 변형할 때 피연산자가 숫자가 아니면 형 변환에 실패한다

 

console.log(+”100px”); // NaN

 

유일한 예외는 문자열의 처음 또는 끝에 공백이 있는 경우, 공백이 무시될 때

 

하지만 실무에선 숫자+기호로 같이 되어있는 경우가 많아서(ex) 100px, 12pt, 19$…) 숫자만 추출해 사용해야 하므로 내장함수 parseInt / parseFloat

 

  • 두 함수는 불가능할 때까지 문자열에서 숫자를 읽는다
  • 읽는 도중 오류가 발생하면 이미 수집한 숫자를 반환한다
  • parseInt는 정수, parseFloat는 부동 소수점 숫자를 반환한다

 

console.log(parseInt(‘100px’)); // 100

console.log(parseFloat(‘12.5em’)); // 12.5

 

console.log(parseInt(‘12.3’)); // 12

console.log(parseFloat(‘12.3.4’)); // 12.3 , 두 번째 점에서 숫자 읽기를 중단

 

// a가 숫자가 아니므로 숫자를 읽을 수 없기에 NaN 반환

console.log(‘a123’)); // NaN

 

parseInt(str, radix)의 두번째 인수 radix는 선택적으로 사용할 수 있다

따라서 parseInt를 사용하면 16진수 문자열, 2진수 문자열 등을 파싱할 수 있다

(*parsing : 문자열 데이터를 분석하고 분해하여 목적한 패턴에 맞게 문자열의 구조를 결정하는 것)

 

console.log(parseInt(‘0xff’, 16)); // 255

console.log(parseInt(‘ff’, 16)); // 255

 

console.log(parseInt(‘2n9c’, 36)); // 123456

 

기타 수학 함수(Math의 내장함수는 알아볼수록 좋다)

 

  • Math.random() : 0과 1 사이의 난수를 반환(1은 제외)

 

console.log(Math.random()); // 0.1234567894322 외 무작위 수

 

  • Math.max(a, b, c …) / Math.min(a, b, c…) : 인수 중 최대/최솟값을 반환

 

console.log(Math.max(3, 5, -10, 0, 1)); // 5

console.log(Math.min(1, 2)); // 1

 

  • Math.pow(n, power) : n을 power번 거듭제곱한 값을 반환

 

console.log(Math.pow(2, 10));  // 2의 10제곱 = 1024

 

 

 

'JavaScript > 자료구조와 자료형' 카테고리의 다른 글

배열  (0) 2022.08.01
문자열 2  (0) 2022.07.31
문자열 1  (0) 2022.07.29
숫자형 1  (0) 2022.07.26
원시값의 메서드  (0) 2022.07.25