본문 바로가기
Javascript

Number & Math

by 안자바먹지 2020. 11. 24.
728x90

표준 빌트인 객체인 Number객체는 생성자 함수 객체이다. 따라서 new 연산자와 함께 호출하여 Number 인스턴스를 호출할 수 있다. Number 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 객체를 생성한다. 

 

Number.EPSILON

Number.EPSILON은 1과 1보다 큰 숫자중에서 가장 작은 숫자와의 차이와 같다.

약 2.22044604....... x 10 ** (-16) 과 같다. 그렇다면 언제 사용될까? 보통 부동소수점 산술 연산은 정확한 결과를 기대하기 어렵다. 그래서 부동소수점으로 인해 발생되는 오차를 해결하기 위해 사용한다. 

 

function isEqual(a, b) {
  // a와 b를 뺀 값의 절대값이 EPSILON보다 작으면 같은수로 인정한다.
  return Math.abs(a - b) < Number.EPSILON;
}

isEqual(0.1 + 0.2 , 0.3); // true

 


 

Number.isFinite

인수로 전달된 숫자값이 정상적인 유한수, 즉 Infinity 또는 -Infinity가 아닌지 검사하여 그 결과를 불리언 값으로 리턴한다. 단, 인수가 NaN일 경우 false를 리턴한다. 빌트인 전역함수 isFinite와 차이가 있는데, isFinite는 전달 받은 인수를 숫자로 암묵적 타입 변환을 하여 검사를 수행하지만 Number.isFinite는 전달 받은 인수를 숫자로 암묵적 타입 변환하지 않는다. 그래서 숫자가 아닌 인수를 넘겼을 경우 false를 리턴한다.

 


 

Number.isSafeInteger

인수로 전달된 숫자값이 안전한 정수인지 검사하여 그 결과를 불리언 값으로 리턴한다. 

 


 

Number.prototype.toFixed

숫자를 반올림하여 문자열로 반환한다. 반올림하는 소수점 이하 자릿수를 나타내는 0~20 사이의 정수값을 인수로 전달할 수 있다. 인수를 생략하면 기본값은 0이다.

 

// 소수점 이하 반올림. 인수를 생략하면 기본값 0이 저장된다.
(12345.6789).toFixed(); // 12346

// 소수점 이하 1자릿수 유효, 나머지 반올림
(12345.6789).toFixed(1); // 12345.7

// 소수점 이하 2자릿수 유효, 나머지 반올림
(12345.6789).toFixed(2); // 12345.68

// 소수점 이하 3자릿수 유효, 나머지 반올림
(12345.6789).toFixed(3); // 12345.679

 


 

Number.prototype.toPrecision

toPrecision 메서드는 인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환한다.

 

// 전체 자릿수 유효. 인수를 생략하면 기본값 0이 저장된다.
(12345.6789).toPrecision(); // 12345.6789

// 전체 1자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(1); // 1e+4

// 전체 2자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(2); // 1.2e+4

// 전체 6자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(6); // 12345.7

 


 

Math.max

전달받은 인수 중에서 가장 큰 수를 반환한다. 인수가 전달되지 않으면 -Infinity를 반환한다. 배열을 인수로 전달받아 배열의 요소 중에서 최대값을 구하려면 Function.prototype.apply 메서드 또는 스프레드 문법을 이용해야 한다.

 

Math.max.apply(null,[1,2,3]); // 3

Math.max(...[1,2,3]) // 3
728x90

'Javascript' 카테고리의 다른 글

String  (0) 2020.11.24
Date  (0) 2020.11.24
클로저  (0) 2020.11.18
this  (0) 2020.11.18
빌트인 객체  (0) 2020.11.18

댓글