티스토리 뷰

 

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 일 수 없는 경우에 발생하는 것 같다. 

여기서 + 은 조금 미묘한데 다음 글에서 관련 내용을 정리한다.

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함