whatisthis?

javaScript. (8) 숫자와 Math 객체 본문

WEB STUDY/JAVASCRIPT

javaScript. (8) 숫자와 Math 객체

thisisyjin 2022. 1. 22. 12:40

숫자(Number)

- 숫자 또한 원시 래퍼 객체 (new Number()) 가 존재하고, 메소드를 가질 수 있다.

 

let num1 = 0.1;
let num2 = 0.2;

num1 + num2;    // 0.3000000000000004

컴퓨터는 소수를 2진법으로 바꿔 계산하는데, 2진법으로 바꾸면 몇몇 소수는 무한소수가 된다.

무한소수의 끝부분을 버려 유한소수로 만들고, 버린 부분때문에 오차가 발생하게 된다.

 

 

따라서, 실수의 계산에서는 정수로 만든 후 계산하고, 마지막에 다시 나눠주는 번거로운 과정이 필요하다.

 

(10 * num1 + 10 * num2) / 10;     // 0.3

 

그러나, toFixedtoPrecision 메서드를 활용하면 해결된다.


📌 Number 의 메서드

 

 

1) Number.toFixed(소수자릿수)

- 지정된 소수자릿수까지 반올림하여 나타냄.

- 결과를 문자열로 반환함. (숫자로 바꿔주는 작업 필요)

1.248.toFixed(2);  // '1.25'

 

2) Number.toPrecision(자릿수)

지정된 자릿수만큼만 표현해 문자열로 반환.

- 소수일 경우 앞에 0들은 무시함. (0은 자릿수에 포함 X)

1.23456.toPrecision(2);   // 1.2 
0.000147.toPrecision(2);  // '0.00015'  - 0은 포함 X

 

3) isNaN(Number)

- 안에 넣은 숫자가 진짜 숫자인지 확인. 

- true / false 중에 결과 반환.

 isNaN(3/'abc'); 	// true - 즉, NaN이라는 뜻
NaN (Not a Number) : 숫자 값중 하나. 숫자가 아닌 값들에 true를 반환함.
❗❗ 자바스크립트에서 유일하게 자신과 같지 않은 값임.
NaN == NaN      // false​

 

3) Infinity

- 0으로 나누었을 경우 Infinity가 나옴.

 

- 양수 / 0 = Infinity

- 음수 / 0 = -Infinity

- Infinity - Infinity = Infinity / Infinity = NaN (빼기, 나누기 불가)

 

+) 0 / 0 = NaN

 

 

 

4) parseInt(Number, 진법), parseFloat(Number)

- 문자열을 숫자로 바꿔줌.

- 단, 문자열이라도 값이 숫자이거나 / 숫자로 시작해야함. 

- 숫자로 시작하지 않으면 NaN을 반환함.

 

 

 

5) Number()

- Number객체 자체가 함수로 쓰일 수 있음.

- 객체가 어떻게 함수로 쓰이는가 ? >> 객체지향 프로그래밍의 원리

- 숫자로 시작하더라도, 문자열에 문자가 포함되어있다면 NaN 반환.

>> 즉, 숫자를 추출하는 parse능력은 parseInt가 더 뛰어남.

 

- 숫자의 진법 표기 (숫자 앞에)

2진법 (binary) 0b
8진법 (octal) 0o
16진법 (hexademical) 0x

 

 

 


 

 📌 Math 객체

- 각종 수학 계산을 도와줌.

- Number()과 같이 객체를 함수로 사용하지는 못함.

 

 

1) Math.random()

- 0과 1사이 랜덤값을 뽑아줌. (0이상 1미만)

Math.random();      // 0.xxxxxxxxxx

 

 

2) Math.floor() / Math.ceil() / Math.round()

Math.floor(5.5);      // 5
Math.ceil(5.5);      // 6
Math.round(5.5);      // 6
Math.floor() 내림
Math.ceil() 올림
Math.round() 반올림 

❗❗ 소수점 반올림 - toFixed() 사용

 

 

3) Math.abs()

- 절대값 (예> |-6| = 6)을 알려줌.

 

 

4) Math.pow(값, 지수) 

- 거듭제곱 (power의 약자)

 

 

5) Math.sqrt(값)

- 제곱근 (sqare root의 약자)

 

 

6) Math.max(val1,val2,val3, ...)

    Math.min(val1,val2,val3, ...)

 

- 여러 값들 중 최대 / 최소 값을 찾아줌.

 

 

7) Math.PI

- 3.141592... 를 의미. 

 

 

 


REFERENCE

 

https://www.zerocho.com/category/JavaScript/post/573877c7715202c8679b3aef

 

(JavaScript) 숫자와 Math 객체

안녕하세요 이번 시간에는 숫자(Number)에 대해 알아보겠습니다. 숫자도 원시 래퍼 객체(new Number())가 있습니다. 그래서 메소드를 가질 수 있습니다. 사실 숫자만으로는 양이 별로 없어서 Math 객체

www.zerocho.com

이 포스팅은 zerocho님의 javascript 강의를 보고 작성한 글입니다.

공부+기록 용으로 작성한 것이며, 자세한 것은 위 포스팅을 참고하세요!