티스토리 뷰
1. 주의 사항
앞서 자바스크립트는 Wrapper Object 를 통해서 literal 들이 메서드를 호출할 수 있게 해 준다고 언급한 바 있다.
그런데 Number 의 경우 주의를 기울여야 한다.

위의 첫 코드가 에러를 발생시킨다.
그 이유를 문제없이 실행된 10.1.toString(); 과 비교하면 짐작할 수 있다.
자바스크립트 파서가 ' . '(dot) 이 소숫점을 나타내는 역할인지 아니면 메서드 호출인지 구별해내지 못했던 것이다.
그렇다면 10 은 어떻게 toString 을 호출해야 할까? 아는 대로 세 가지 방법을 소개한다.

자바스크립트를 포함해서 대부분의 언어에서 수를 다룰 때,
let a=2.;
let b=.7;
처럼 허전한(?) 표현을 허용한다. 위의 10..toString() 은 10. 이 .toString() 으로 메서드를 호출하고 있다.
세 번째는 10 다음에 공백을 준 다음 메서드를 호출하는 것도 이유는 모르겠지만 원하는 결과를 얻는다.
개인적으로는 두 번째 (10).toString(); 을 추천한다.
2. Javascript 는 integer 와 floating point 를 퉁쳐서 number 로 취급한다.
자바스크립트는 미리 메모리의 크기를 지정해야 하는 C\C++ 계열 언어들처럼 수를 섬세하게 구분하지 않는다.

구분해야 할 일이 생기면 메서드 isInteger 를 사용한다.

3. 다른 진법 표기와 exponential notation
Integer는 0b, 0o, 0x 를 사용해서 각각 2진법, 8진법, 16진법 표기를 사용할 수 있다.

과학 과목 숙제에서 보았을 표현인 scientific notation 도 사용할 수 있다.

4. 연산
이항 연산 더하기, 빼기, 곱하기 ( +, - , * ) 는 말할 것이 없다.
나누기는 C\C++ 계열과는 달리 정수 나누기가 없다.
7/3 이 2 가 되기를 기대한 C 프로그래머라면...
문제가 발생할 것이다. 정수 몫을 구하려면
Math.floor(7/3);
parseInt(7/3);
정도를 쓸 수 있다. trunc 함수를 이용한다든지 다양한 방법이 있겠지만...
그리고 거듭제곱은 ** 를 이용할 수 있다.
실험해 본 범위 안에서는 Math.pow 와 완전히 같았다.
테스트의 일부만 소개하면,

실행 결과는 다음과 같다.

그 외에
복합 할당연산자 += , -=, *=, /= , %= 와
증감 연산자 ++, -- 등이 있는데 설명은 생략한다.
5. Infinity 와 Nan
number 의 두 이단아들이다.

1e200 처럼 너무 큰 수이거나 1 / 0 처럼 분모에 0 이 온 경우 에러가 아니라 Infinity 로 처리된다.
Nan 은 number 의 연산자가 적용되었지만 결과가 number 일 수 없는 경우에 발생하는 것 같다.
여기서 + 은 조금 미묘한데 다음 글에서 관련 내용을 정리한다.
'Programming Language > JavaScript [초급 -완결]' 카테고리의 다른 글
Quick JavaScript (6) Array 1 (0) | 2022.09.10 |
---|---|
Quick JavaScript (5) Type Conversion (0) | 2022.09.07 |
Quick JavaScript (3) Template Literal 과 Symbol (2) | 2022.09.01 |
Quick JavaScript (2) Reference (0) | 2022.09.01 |
Quick JavaScript (1) 데이터 타입과 변수 (0) | 2022.09.01 |
- Total
- Today
- Yesterday
- Reference
- C++ big number
- stack
- number theory
- nearest common ancestor
- fenwick tree
- 정수론
- Aho-Corasick
- script
- 백준
- lazy propagation
- Vim
- shell
- math font
- dynamic programming
- 다익스트라
- BOJ
- javascript array
- max flow
- segment tree
- Shell Programming
- map
- python3
- bash script
- RUBY
- persistent segment tree
- Dijkstra
- 세그먼트 트리
- JavaScript
- bash
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |