본문 바로가기

프로그래밍/자바스크립트

[자바스크립트]내장 함수 : isFinite(), isNaN(), parseInt(), parseFloat()

1. isFinite()

- 해당 값이 유한한값인지 판별
- 해당 값이 유한한 숫자이면 true, 무한한 숫자 또는 숫자가 아니라면 false 반환
- ex) 123.123 -> 유한한 숫자 : true

       infinity -> 무한한 숫자 : false

       문자열 -> 문자 : false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>isFinite함수</title>
<script type="text/javascript">
    var number1 = 10 / 0;
 
    document.write('number1 = '+number1+'<br>');//number1 = Infinity
    
    
    //양수를 0으로 나누면 Infinity라고 출력되지만
    //음수를 0으로 나누면 -Infinity라고 출력된다.
    //조건 체크 시 Infinity로 체크하는 것은 문제가 있다.
    if(number1 == Infinity){    //0으로 나누는 경우 
        document.write('무한<br>');
        
    }else {
        document.write('유한<br>');
    }
    
    var number2 = -10/0;
    document.write('number2 = '+number2+'<br>');//number2 = -Infinity
    
    var number3 = 10/2;
    
    document.write('-------------------------<br>');
    
    //양수, 음수를 0으로 나눴는지 아닌지 모든 검증 가능
    if(isFinite(number1)){    //0이 아닌 수로 나눈 경우
        document.write('유한:0이 아닌 수로 나눔<br>');
    }else{//0으로 나눈 경우
        document.write('무한:0으로 나눔<br>');
    }
    
    if(isFinite(number2)){    //0이 아닌 수로 나눈 경우
        document.write('유한:0이 아닌 수로 나눔<br>');
    }else{//0으로 나눈 경우
        document.write('무한:0으로 나눔<br>');
    }
    if(isFinite(number3)){    //0이 아닌 수로 나눈 경우
        document.write('유한:0이 아닌 수로 나눔<br>');
    }else{//0으로 나눈 경우
        document.write('무한:0으로 나눔<br>');
    }
    
</script>
//출력 결과
number1 = Infinity
무한
number2 = -Infinity
-------------------------
무한:0으로 나눔
무한:0으로 나눔
유한:0이 아닌 수로 나눔
</head>
<body>
</body>
</html>
cs

2. isNaN()

- 매개변수가 숫자인지 아닌지 검사하는 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>isNaN함수</title>
<script type="text/javascript">
    var number1 = 10 / 'A';
    document.write('number1 = '+number1 + '<br>');
    
    if(number1 == NaN){    //항상 false로 반환하기 떄문에 isNaN함수를 사용해야한다.
        document.write('숫자가 아님<br>');
    }else {
        document.write('숫자임<br>');
    }
    
    document.write('-------------------<br>');
    
    //전달된 인자의 값이 숫자인지 아닌지 판별
    if(isNaN(number1)){
        document.write('숫자가 아님<br>');
    }else {
        document.write('숫자임<br>');
    }
</script>
//출력 결과
number1 = NaN
숫자임
-------------------
숫자가 아님
</head>
<body>
 
</body>
</html>
cs

 

3. parseInt(), parseFloat()

- 문자열을 수로 바꾸는 함수

- parseInt() : 문자열 -> 정수

- parseFloat() : 문자열 -> 실수

- 띄어쓰기로 여러 개의 수가 있으면 첫번째 수만 바꿈

- 공백으로 시작하면 공백 무시

- 수가 아닌 문자로 시작하면 NaN을 반환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>parseInt/parseFloat</title>
<script type="text/javascript">
    var num = '1234.56';
    var won = '1000원';
    var won2 = '원1000';
    
    document.write(Number(num) + '<br>'); //string -> number;
    document.write(Number(won) + '<br>'); //NaN 출력
    document.write(parseInt(won) + '<br>');    //앞의 숫자를 추출해서 형변환(1000)
    document.write(parseInt(won2) + '<br>'); //앞에있는 숫자만 추출하므로 NaN출력
    document.write('--------------------------------<br>');
    
    var num2 = '24.56';
    var dollar = '1.5$';
    var dollar2 = '$1.5';
    
    document.write(Number(num2) + '<br>'); //string --> number
    document.write(Number(dollar) + '<br>'); //NaN
    document.write(parseFloat(dollar) + '<br>'); //앞의 숫자를 추출해서 형변환(1.5)
    document.write(parseFloat(dollar2) + '<br>'); //NaN
    
</script>
//출력 결과
1234
NaN
1000
NaN
--------------------------------
24.56
NaN
1.5
NaN
</head>
<body>
 
</body>
</html>
cs