[ 자바스크립트 ] Number.isSafeInteger() 🕔 2016. 3. 6. 08:06
[ Javascript ] Number.isSafeInteger() , Number.MAX_SAFE_INTEGER , Number.MIN_SAFE_INTEGER
<script type="text/javascript"> // 출처 : Number.isSafeInteger() ─ MDN if ( ! Number.MAX_SAFE_INTEGER ){ Number.MAX_SAFE_INTEGER = Math.pow( 2 , 53 ) - 1; Number.MIN_SAFE_INTEGER = -Number.MAX_SAFE_INTEGER; } if ( ! Number.isInteger ){ Number.isInteger = function isInteger ( value ) { return typeof value === "number" && isFinite(value) && Math.floor(value) === value; }; } if ( ! Number.isSafeInteger ){ Number.isSafeInteger = function isSafeInteger ( value ) { return Number.isInteger(value) && Math.abs(value) <= 9007199254740991; }; } </script>
자바스크립트에서 정수는 -(253 - 1) 부터 +(253 + 1) 까지의 수만 사용할 수 있다.
즉, -9007199254740991부터 9007199254740991까지
이 범위 안에서만 정확한 정수의 값을 가져올 수 있다는 말이다.
이 범위를 벗어난 정수에 대해서는,
짝수(even number)일 경우에는 정확한 값을 가져올 수 있지만,
홀수(odd number)일 경우에는 엉뚱한 값이 나올 수 있다.
따라서, 정확한 계산을 할 수 있는 정수인지를 체크할 필요가 있다.
바로 이 경우에 사용되는 함수가 isSafeInteger()이다.
<p id="demo1"> </p> <p id="demo2"> </p> <script type="text/javascript"> var max = Math.pow( 2, 53 ) - 1; var min = -max; demo1.innerHTML = max; demo2.innerHTML = min; </script>
<p id="demo1"> </p> <p id="demo2"> </p> <script type="text/javascript"> var max = Number.MAX_SAFE_INTEGER; var min = Number.MIN_SAFE_INTEGER; demo1.innerHTML = max; demo2.innerHTML = min; </script>
아래의 버튼을 반복해서 클릭해본다면, 무슨 뜻인지를 알 수 있을 것이다.
9007199254740991 + =
9007199254740991 + =
-9007199254740991 - =
-9007199254740991 - =
<p id="demo"> 9007199254740991 + <span></span> = <span></span> <br /> 9007199254740991 + <span></span> = <span></span> <br /> -9007199254740991 - <span></span> = <span></span> <br /> -9007199254740991 - <span></span> = <span></span> <br /> </p> <button onclick="testing()"> 클릭하세요 </button> <script type="text/javascript"> var tags = demo.getElementsByTagName( "span" ); var max = Math.pow( 2, 53 ) - 1; var min = -max; var a = -2, b = 0, x = 0, array; function testing (){ a = a + 2; b = a + 1; array = [ a, max + a, b, max + b, a, min - a, b, min - b ]; for ( x = 0; x < array.length; x++ ){ tags[ x ].innerHTML = array[ x ]; } } </script>
9007199254740991 -
-9007199254740991 +
<p> 9007199254740991 - <span id="demo1"></span> <br /> -9007199254740991 + <span id="demo2"></span> </p> <button onclick="testing()"> 클릭하세요 </button> <script type="text/javascript"> var max = Number.MAX_SAFE_INTEGER; var min = Number.MIN_SAFE_INTEGER; var x = 0, subtract = 0, add = 0; function testing (){ x++; subtract = max - x; add = min + x; demo1.innerHTML = x + " = " + subtract; demo2.innerHTML = x + " = " + add; } </script>
isSafeInteger() 함수를 실행한 결과는,
정확한 계산이 가능한, 안전한 정수(safe integer)이라면 true, 그렇지 않다면 false이다.
<p id="demo1"> </p> <p id="demo2"> </p> <script type="text/javascript"> var number1 = 85749213; var number2 = 9008007006005004; demo1.innerHTML = Number.isSafeInteger( number1 ); demo2.innerHTML = Number.isSafeInteger( number2 ); </script>
Number.isSafeInteger( Infinity ) | |
Number.isSafeInteger( -Infinity ) | |
Number.isSafeInteger( NaN ) | |
Number.isSafeInteger( true ) | |
Number.isSafeInteger( false ) | |
Number.isSafeInteger( 1 ) | |
Number.isSafeInteger( 0 ) | |
Number.isSafeInteger( "" ) | |
Number.isSafeInteger( null ) | |
Number.isSafeInteger( undefined ) |
이 내용이 도움이 되셨다면, 아래의 하트 버튼을 눌러주세요. *^^*
'JAVASCRIPT > Number & Math' 카테고리의 다른 글
[ 자바스크립트 ] Math.floor() VS parseInt() (0) | 2016.03.17 |
---|---|
[ 자바스크립트 ] Number() VS parseFloat() (0) | 2016.03.16 |
[ 자바스크립트 ] isFinite() VS Number.isFinite() (0) | 2016.03.06 |
[ 자바스크립트 ] isNaN() VS Number.isNaN() (0) | 2016.03.06 |
[ 자바스크립트 ] 천단위 콤마 추가하기 (0) | 2015.05.30 |