whatisthis?
javaScript. (8) 숫자와 Math 객체 본문
숫자(Number)
- 숫자 또한 원시 래퍼 객체 (new Number()) 가 존재하고, 메소드를 가질 수 있다.
>> Wrapper Object 에 대한 내용은 아래 포스팅 참조.
let num1 = 0.1;
let num2 = 0.2;
num1 + num2; // 0.3000000000000004
컴퓨터는 소수를 2진법으로 바꿔 계산하는데, 2진법으로 바꾸면 몇몇 소수는 무한소수가 된다.
무한소수의 끝부분을 버려 유한소수로 만들고, 버린 부분때문에 오차가 발생하게 된다.
따라서, 실수의 계산에서는 정수로 만든 후 계산하고, 마지막에 다시 나눠주는 번거로운 과정이 필요하다.
(10 * num1 + 10 * num2) / 10; // 0.3
그러나, toFixed와 toPrecision 메서드를 활용하면 해결된다.
📌 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
이 포스팅은 zerocho님의 javascript 강의를 보고 작성한 글입니다.
공부+기록 용으로 작성한 것이며, 자세한 것은 위 포스팅을 참고하세요!
'WEB STUDY > JAVASCRIPT' 카테고리의 다른 글
javaScript. 객체지향 프로그래밍(OOP) (0) | 2022.01.22 |
---|---|
javaScript. 클래스 vs 프로토타입 ( ▪ 생성자 ) (0) | 2022.01.22 |
javaScript. 래퍼객체(Wrapper Object) (0) | 2022.01.22 |
javaScript. (7) 문자열 (0) | 2022.01.22 |
javaScript. console 객체의 메서드 (0) | 2022.01.19 |