ES6에서 Number.isSafeInteger을 이용해서 정수 체크를 안전하게 할 수 있습니다.
// Safe valueconsole.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)) // true// Unsafe valueconsole.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER +1)) // false// Because it might have been rounded to it due to overflowconsole.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER +10)) // false
자바스크립트는 결국 BigInt지원을 받게 될 것이다. 지금으로서는 정밀한 정수를 사용해야 한다면 아래 언급된 big.js를 사용하십시오.
import { Big } from'big.js'exportconstfoo=newBig('111.11111111111111111111')exportconstbar=foo.plus(newBig('0.00000000000000000001'))// To get a number:constx:number=Number(bar.toString()) // Loses the precision
UI / 차트, 캔버스, 도면등 성능이 중요한 경우에는 이 라이브러리를 사용하지 마십시오.
NaN
일부 숫자 계산이 number값으로 반환될 수 없는 경우 자바스크립트는 NaN값을 반환합니다.
console.log(Math.sqrt(-1)) // NaN
메모: 일치연산자는 NaN값에서는 작동하지 않습니다. Number.isNaN을 이용해서 확인하십시오.
// Don't do thisconsole.log(NaN===NaN) // false!!// Do thisconsole.log(Number.isNaN(NaN)) // true
Infinity
숫자로 표현할 수 있는 값의 외부 범위는 Number.MAX_VALUE그리고 -Number.MAX_VALUE값으로 사용할 수 있습니다.