1. 숫자
숫자는 가장 기본이 되는 데이터 타입이다. 그런 만큼 설명이 그리 필요하지 않다.
자바스크립트는 정수 값과 실수 값을 구별하지 않는다는 점에서 C나 자바(Java) 같은 프로그램 언어와
다르다. 자바스크립트에서 모든 숫자는 실수로 표현된다. 자바스크립트는 숫자를 IEEE 754[각주:1]
표준에 의해 정의되는 64비트 실수 형식을 사용하여 표현한다. 따라서 ±1.7976931348623157 X 10308 만큼
크고 ±5 X 10-324 만큼 작은 숫자를 표현할 수 있다.
숫자가 자바스크립트 프로그램 내에 바로 나타날 때 이를 숫자 리터럴(literal)이라고 부른다.
자바스크립트는 다음 절에서 설명되는 것처럼 다양한 형태의 숫자 리터럴을 지원한다. 숫자 리터럴 앞에
마이너스 표시(-)를 붙이면 음수를 만들 수 있다. 그렇지만 전문적인 용어로 말하면 마이너스 표시(-)는
단항 부정 연산자(unary negation operator)를 나타내는 것으로(5장을 참고) 숫자 리터럴 문법에 속하지
않는다.
1. 이 형식은 자바 프로그래머들에게는 double 데이터 타입 형식으로 익숙할 것이다.
이 형식은 거의 모든 C나 C++최신 구현에서 사용되는 double 형식이기도 하다.
2. 정수 리터럴
자바스크립트에서 10 진수 정수는 숫자 시퀀스(sequence)[각주:1] 형태로 작성된다.
예를 들어, 다음은 몇 가지 정수 리터럴을 보여 준다.
0
3
10000000
자바스크립트 숫자 형식은 정확히 -9007199254740992(-253)에서 9007199254740992(253) 사이에 있는
(이 두 수를 포함하여) 모든 정수를 표현할 수 있다. 여러분이 이보다 더 큰 정수를 사용하면 낮은자리 수에
대한 정밀도(precision)를 잃는다. 그러나 자바스크립트에서 몇몇 정수 연산자들(특히 5장에서 설명될 비트 단위연산자(bitwise operator)은 -2147483648(-231)에서 2147483647(231-1)에 이르는 32비트 정수에 대해서만 작동한다는 것을 유의하라.
- (역자 주) 시퀀스(sequence)란 연속된 숫자나 문자를 의미한다. [본문으로]
3. 16진수와 8진수
10진수 리터럴 이외에도 자바스크립트는 16진수 값을 인식한다. 16진수 리터럴은 '0x'나 '0X'로 시작하고 16진수 숫자들이 뒤따르는 형태다. 16진수 숫자는 0에서 9또는 10부터 15까지를 표현하는 a (혹은 A) 부터 f (혹은 F)까지의 문자 중에 하나이다. 다음은 몇 가지 16진수 정수 리터럴의 예를 보여 준다.
0xCAFE911
ECMAScript 표준에서 지원하는 것은 아니지만 몇몇 자바스크립트 구현에서는 정수 리터럴을 8진수로도 표현할 수 있게 지원한다.8진수 리터럴은 숫자 0으로 시작되고 0부터 7 사이의 숫자 시퀀스가 뒤따르는 형태다. 예를 들어,
자바스크립트 구현에 따라서 8진수 리터럴을 지원할 수도 있고 하지 않을 수도 있기 때문에 0으로 시작하는 정수 리터럴은 절대로 사용하지 말라. 특정 구현에서 0으로 시작하는 리터럴을 8진수 값으로 인식할지 10진수 값으로 인식할지 알 수 없기 때문이다.
4. 부동소수점 리터럴
부동소수점 리터럴은 소수점을 가질 수 있다. 부동소수점 리터럴은 전통적인 문법으로 표현된다.
실수는 정수 부분과 소수점, 소수점 이하 부분으로 표현된다.
지수 표기법을 사용하여 부동소수점 리터럴을 표현할 수도 있다. 지수 표기법에서는 실수에 이어
문자 e(혹은 E)가 따라 나오고, 그 뒤에 선택적으로 플러스 혹은 마이너스 기호가 나타나고 마지막으로
정수 지수 값이 따라 나온다. 지수 표기법으로 표현한 값은 실수에 10을 지수 회수만큼 곱한 값을 나타낸다.
지수 표기법 문법은 더 간결하게 표현하면 다음과 같다.
다음은 부동소수점 리터럴의 예를 보여 준다.
2345.789
.33333333333333
6.02e23 // 6.02 ×× 1023
1.4738223E-32 // 1.4738223 ×× 10-32
실수는 무한 개 존재하지만 자바스크립트에서는 제한된 개수(정확히는 18437736874454810627개)만을 표현할 수 있다. 이것은 여러분이 자바스크립트에서 실수 값으로 작업할 때 표현된 수가 종종 실제값의 근사치가 될 것이라는 것을 의미한다. 그러나 근사치 값도 충분히 정확하며 실제로 이러한 점이 문제가 되는 경우는 별로 없다.
5. 숫자 조작
자바스크립트 프로그램에서는 언어에서 제공하는 산술 연산자를 사용하여 숫자를 다룬다.
산술 연산자에는 더하기를 위한 +, 빼기를 위한 -, 곱하기를 위한 *, 그리고 나누기를 위한 /가 있다.
이들 연산자와 기타 산술 연산자에 대한 상세한 설명은 5장에서 찾아 볼 수 있다.
이러한 기본 산술 연산자 이외에도 코어 자바스크립트에서 제공하는 많은 수의 수리(mathematical) 함수를 사용해 한층 더 복잡한 수리 연산을 수행할 수 있다. 이 함수들은 사용 편의를위해 모두 Math라는 단일 객체의 프로퍼티로 들어 있다. 따라서 이 함수들을 사용할 때는 항상 Math라는 이름을 사용한다.
예를 들어, 다음은 숫자 값 x의 사인(sine) 값을 계산하는 방법을 보여 준다.
숫자 표현식의 제곱근은 다음과 같이 계산한다.
자바스크립트에서 지원하는 모든 수리 함수에 대한 자세한 설명은 3부에 있는 Math 객체에 대한 설명과 관련 코드가 나와 있는 곳에서 찾아볼 수 있다.
6. 숫자 변환
자바스크립트는 숫자를 문자열 형식으로 변환하거나 문자열을 숫자로 변환할 수 있다.
숫자를 문자열로 변환하거나 그 반대로 변환하는 방법은 3.2절에 설명되어 있다.
7. 특수한 숫자 값
자바스크립트에서는 몇 가지 특수한 숫자 값이 사용된다. 부동소수점 값으로 표현 가능한 가장 큰 유한 수보다 더 큰 값은 무한대를 나타내는 특수한 값이 되며 자바스크립트는 그 값을 Infinity로 출력한다. 비슷하게 음수 값이 표현 가능한 가장 작은 음수 값보다 더 작은 값은 음의 무한대가 되며 자바스크립트는 이 값을 -Infinity로 출력한다.
수리 연산(0을 0으로 나누는 것과 같은 경우)이 정의도지 않은 결과를 산출하거나 에러를 발생시킬 경우에도 특수한 자바스크립트 값이 반환된다. 이 경우 그 결과는 숫자가 아닌 특수한 값이 되며 자바스크립트는
이 값을 NaN으로 출력한다. 값 아닌 이 값은 별난 방식으로 작동한다. 어떤 숫자와 비교해도 동일하지 않으며
심지어 스스로와 비교해도 그렇다! 이러한 이유로 인해 이 값을 테스트해 보기 위해 isNaN()이라는 특별한
함수가 필요하다. 관련 함수 isFinite()는 주어진 숫자가 NaN이 아닌 동시에 양의 무한대나 음의 무한대가
아닌지 여부를 검사한다.
표 3-1은 이러한 특수한 숫자 값들을 표현하기 위해 자바스크립트에 정의되어 있는 몇 가지 상수를 나열한 것이다. Infinity와 NaN은 ECMAScript v1 표준에서 정의된 것으로 자바스크립트 1.3 이전버전에서는 구현되지 않았었다. 그러나 Number와 관련된 다양한 상수들은 자바스크립트 1.1부터 지원되어 왔다.
표 3-1 특수한 숫자 상수들
상수 의미
Infinity 무한대를 나타내는 특수한 값
NaN 숫자가 아닌 특수한 값
Number.MAX_VALUE 표현 가능한 가장 큰 수
Number.MIN_VALUE 표현 가능한 (0에 가까운) 가장 작은 수
Number.NaN 숫자가 아닌 특수한 값
Number.POSITIVE_INFOINITY 양의 무한대를 표현하는 특수한 값
Number.NEGATIVE_INFINITY 음의 무한대를 표현하는 특수한 값
'IT_Programming > JavaScript' 카테고리의 다른 글
자바스크립트 완벽가이드 - 3.3 불리언 값 (0) | 2010.07.04 |
---|---|
자바스크립트 완벽가이드 - 3.2 문자열 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 대소문자, 빈공백, 세미콜론, 식별자, 예약어 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 2.1 문자집합 (0) | 2010.07.04 |
[펌] 자바 스크립트 이벤트를 발생시킨 엘리먼트 찾기 (0) | 2010.06.14 |