[ 자바스크립트 ] 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 |