Skip to content

Commit 84c9f92

Browse files
committed
add chapter_27 ~ chapter_35
1 parent 8c8e345 commit 84c9f92

File tree

9 files changed

+2483
-0
lines changed

9 files changed

+2483
-0
lines changed

book/이용우/chapter_27.md

Lines changed: 690 additions & 0 deletions
Large diffs are not rendered by default.

book/이용우/chapter_28.md

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
### Chapter 28 - Number
2+
3+
`Number` 표준 빌트인 객체는 숫자 타입을 다룰 때 유용한 메드ㄹ 제공한다.
4+
5+
<br><br>
6+
7+
### Numbser 프로퍼티
8+
#### Number.EPSILON
9+
10+
`Number.EPSILON`은 1과 1보다 큰 숫자 중 가장 작은 숫자의 차이를 의미한다.
11+
12+
```js
13+
console.log(Number.EPSILON); // 2.220446049250313e-16
14+
```
15+
16+
<br>
17+
18+
정수는 2진법으로 오차 없이 저장 가능하지만,
19+
부동소수점을 표현하기 위해 널리 쓰이는 표준인 IEEE 754는 2진법으로 변환했을 때
20+
무한소수가 되어 미세한 오차가 발생할 수 밖에 없다.
21+
22+
``` js
23+
0.1 + 0.2; // 0.30000000000000004
24+
0.1 + 0.2 === 0.3; // false
25+
```
26+
27+
이런 부동소수점으로 발생하는 오차를 해결하기 위해 `Number.EPSILON`을 사용한다.
28+
29+
``` js
30+
function isEqual(a, b) {
31+
// a와 b를 비교하여 차이가 Number.EPSILON보다 작으면 같은 수로 판단
32+
return Math.abs(a - b) < Number.EPSILON;
33+
}
34+
35+
isEqual(0.1 + 0.2, 0.3); // true
36+
```
37+
38+
39+
<br><br>
40+
41+
42+
#### Number.MAX_VALUE
43+
44+
`Number.MAX_VALUE`는 자바스크립트에서 표현할 수 있는 가장 큰 숫자를 나타낸다.
45+
46+
``` js
47+
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
48+
```
49+
50+
> `Number.MAX_VALUE`보다 큰 숫자는 `Infinity`이다.
51+
52+
<br>
53+
54+
#### Number.MIN_VALUE
55+
56+
`Number.MIN_VALUE`는 자바스크립트에서 표현할 수 있는 가장 작은 양수를 나타낸다.
57+
58+
``` js
59+
console.log(Number.MIN_VALUE); // 5e-324
60+
```
61+
62+
> `Number.MIN_VALUE`보다 작은 숫자는 `0`이다.
63+
64+
<br>
65+
66+
#### Number.NaN
67+
68+
`Number.NaN``NaN`을 나타낸다.
69+
> NaN(Not a Number)
70+
71+
``` js
72+
console.log(Number.NaN); // NaN
73+
```
74+
75+
76+
<br><br>
77+
78+
### Number 메소드
79+
#### Number.isFinite
80+
인수로 전달된 숫자가 유한한지 확인하고 그 결과를 불리언 타입으로 반환한다.
81+
82+
``` js
83+
Number.isFinite(0); // true
84+
Number.isFinite(Number.MAX_VALUE); // true
85+
Number.isFinite(Number.MIN_VALUE); // true
86+
Number.isFinite(Infinity); // false
87+
Number.isFinite(-Infinity); // false
88+
Number.isFinite(NaN); // false
89+
Number.isFinite(undefined); // false
90+
```
91+
92+
<br>
93+
94+
#### Number.isInteger
95+
인수로 전달된 숫자가 정수인지 확인하고 그 결과를 불리언 타입으로 반환한다.
96+
97+
``` js
98+
Number.isInteger(0); // true
99+
Number.isInteger(123); // true
100+
101+
Number.isInteger('123'); // false
102+
```
103+
104+
<br>
105+
106+
#### Number.isNaN
107+
인수로 전달된 숫자가 `NaN`인지 확인하고 그 결과를 불리언 타입으로 반환한다.
108+
109+
``` js
110+
Number.isNaN(NaN); // true
111+
Number.isNaN(123); // false
112+
Number.isNaN('123'); // false
113+
Number.isNaN(undefined); // false
114+
```
115+
116+
<br>
117+
118+
#### Number.prototype.toExponential
119+
숫자를 **지수 표기법**으로 변환하여 문자열로 반환한다.
120+
121+
> 지수 표기법은 소수점 앞에 10의 거듭제곱을 표기하는 방법이다.
122+
> 예) 1234.5678 -> 1.2345678e+3
123+
124+
``` js
125+
const num = 1234.5678;
126+
127+
console.log(num.toExponential()); // 1.2345678e+3
128+
console.log(num.toExponential(2)); // 1.23e+3
129+
console.log(num.toExponential(4)); // 1.2346e+3
130+
```
131+
132+
<br>
133+
134+
#### Number.prototype.toFixed
135+
숫자를 반올림하여 문자열로 반환한다.
136+
137+
``` js
138+
const num = 1234.5678;
139+
140+
// 인수 생략 시 기본값 0이 지정됨
141+
console.log(num.toFixed()); // 1235
142+
143+
// 소수점 이하 자리수를 지정하여 반올림
144+
console.log(num.toFixed(2)); // 1234.57
145+
console.log(num.toFixed(4)); // 1234.5678
146+
```
147+
148+
<br>
149+
150+
#### Number.prototype.toPrecision
151+
숫자를 지정된 자리수까지 나타내어 문자열로 반환한다.
152+
153+
``` js
154+
const num = 1234.5678;
155+
156+
// 인수 생략 시 기본값 0이 지정됨
157+
console.log(num.toPrecision()); // 1234.5678
158+
159+
// 유효자리수를 지정하여 반올림
160+
console.log(num.toPrecision(2)); // 1.2e+3 (1200)
161+
console.log(num.toPrecision(4)); // 1235
162+
```
163+
164+
<br>
165+
166+
#### Number.prototype.toString
167+
숫자를 문자열로 변환하여 반환한다.
168+
169+
``` js
170+
const num = 1234.5678;
171+
172+
// 10진수 문자열 반환
173+
console.log(num.toString()); // 1234.5678
174+
175+
// 2진수 문자열 반환
176+
console.log(num.toString(2)); // 10011010010.00010100011110101110
177+
178+
// 8진수 문자열 반환
179+
console.log(num.toString(8)); // 2324.446365326547
180+
181+
// 16진수 문자열 반환
182+
console.log(num.toString(16)); // 4d2.91edae147ae
183+
```

book/이용우/chapter_29.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
### Chapter 29 - Math
2+
3+
`Math` 표준 빌트인 객체는 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공한다.
4+
5+
<br><br>
6+
7+
### Math 프로퍼티
8+
9+
#### Math.PI
10+
11+
`Math.PI`는 원주율을 나타낸다.
12+
13+
``` js
14+
console.log(Math.PI); // 3.141592653589793
15+
```
16+
17+
<br><br>
18+
19+
### Math 메서드
20+
21+
#### Math.abs
22+
23+
`Math.abs`는 인수로 전달된 숫자의 절대값을 반환한다.
24+
25+
``` js
26+
console.log(Math.abs(-1)); // 1
27+
console.log(Math.abs('-1')); // 1
28+
console.log(Math.abs('')); // 0
29+
console.log(Math.abs([])); // 0
30+
console.log(Math.abs(null)); // 0
31+
console.log(Math.abs(undefined)); // NaN
32+
console.log(Math.abs({})); // NaN
33+
console.log(Math.abs('string')); // NaN
34+
console.log(Math.abs()); // NaN
35+
```
36+
37+
38+
<br>
39+
40+
#### Math.round
41+
42+
`Math.round`는 인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환한다.
43+
44+
``` js
45+
console.log(Math.round(1.4)); // 1
46+
console.log(Math.round(1.6)); // 2
47+
console.log(Math.round(1)); // 1
48+
console.log(Math.round(0)); // 0
49+
console.log(Math.round(-1.4)); // -1
50+
console.log(Math.round(-1.6)); // -2
51+
console.log(Math.round(-1)); // -1
52+
53+
```
54+
55+
<br>
56+
57+
#### Math.ceil
58+
59+
`Math.ceil`은 인수로 전달된 숫자의 소수점 이하를 올림한 정수를 반환한다.
60+
61+
``` js
62+
console.log(Math.ceil(1.4)); // 2
63+
console.log(Math.ceil(1.6)); // 2
64+
console.log(Math.ceil(1)); // 1
65+
console.log(Math.ceil(0)); // 0
66+
console.log(Math.ceil(-1.4)); // -1
67+
68+
```
69+
70+
<br>
71+
72+
#### Math.floor
73+
74+
`Math.floor`는 인수로 전달된 숫자의 소수점 이하를 내림한 정수를 반환한다.
75+
76+
``` js
77+
console.log(Math.floor(1.9)); // 1
78+
console.log(Math.floor(1.1)); // 1
79+
console.log(Math.floor(1)); // 1
80+
console.log(Math.floor(0)); // 0
81+
console.log(Math.floor(-1.9)); // -2
82+
83+
```
84+
85+
<br>
86+
87+
#### Math.sqrt
88+
89+
`Math.sqrt`는 인수로 전달된 숫자의 제곱근을 반환한다.
90+
91+
``` js
92+
console.log(Math.sqrt(9)); // 3
93+
console.log(Math.sqrt(-9)); // NaN
94+
console.log(Math.sqrt(2)); // 1.4142135623730951
95+
console.log(Math.sqrt(1)); // 1
96+
console.log(Math.sqrt(0)); // 0
97+
98+
```
99+
100+
<br>
101+
102+
#### Math.random
103+
104+
`Math.random`은 0 이상 1 미만의 부동소수점 난수를 반환한다.
105+
106+
``` js
107+
console.log(Math.random()); // 0 이상 1 미만의 부동소수점 난수
108+
109+
// 1부터 10 이하의 정수 난수를 반환
110+
console.log(Math.floor(Math.random() * 10) + 1);
111+
```
112+
113+
<br>
114+
115+
#### Math.max
116+
117+
`Math.max`는 전달받은 인수 중 가장 큰 수를 반환한다.
118+
119+
``` js
120+
console.log(Math.max(1, 2, 3)); // 3
121+
```
122+
123+
배열을 인수로 전달받아 배열의 요소 중 최대값을 구하려면 `Function.prototype.apply` 메소드 또는 스프레드 문법을 사용해야 한다.
124+
125+
``` js
126+
// 배열 요소 중 최대값 획득
127+
Math.max.apply(null, [1, 2, 3]); // 3
128+
129+
// ES6 스프레드 문법
130+
Math.max(...[1, 2, 3]); // 3
131+
```
132+
133+
<br>
134+
135+
#### Math.min
136+
137+
`Math.min`은 전달받은 인수 중 가장 작은 수를 반환한다.
138+
139+
``` js
140+
console.log(Math.min(1, 2, 3)); // 1
141+
```
142+
143+
배열을 인수로 전달받아 배열의 요소 중 최소값을 구하려면 `Function.prototype.apply` 메서드 또는 스프레드 문법을 사용해야 한다.
144+
145+
``` js
146+
// 배열 요소 중 최소값 획득
147+
Math.min.apply(null, [1, 2, 3]); // 1
148+
149+
// ES6 스프레드 문법
150+
Math.min(...[1, 2, 3]); // 1
151+
```
152+
153+
154+
155+

0 commit comments

Comments
 (0)