JavaScript Numbers


JavaScript 는 오직 하나의 숫자 형식이 있다.

숫자는 소수점(decimal)과 함께 또는 없이 쓸 수 있습니다.


JavaScript Numbers

JavaScript 숫자는 소수점과 함께 또는 없이 쓸 수 있습니다.:

Example

var x = 34.00;    // A number with decimals
var y = 34;       // A number without decimals

Extra large or extra small numbers can be written with scientific (exponent) notation:

Example

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123


JavaScript 숫자는 항상 64-bit 부동 소수점(Floating Point)

많은 다른 프로그래밍 언어와는 달리, JavaScript는 integers, short, long, floating-point 등 과 같은 숫자의 다른 형식을 정의하지 않습니다.

JavaScript 숫자는 항상 국제 IEEE 754 표준에 따라 두배 정확도(double precision)의 부동 소수점 숫자(floating point numbers)로 저장됩니다. 이 형식은 숫자를 64 bits로 저장하며, 숫자 값(the fraction)은  bits 0 부터 bits 51 에, 지수(the exponent)는 bits 52 부터 62 에, 부호(the sign)는 bit 63 에 저장한다. :

Value (aka Fraction/Mantissa) Exponent Sign
52 bits (0 - 51)  11 bits (52 - 62) 1 bit (63)


정확도(Precision)

정수(Integers)(소수점과 지수 표기가 없는 번호)는 15 자리까지 정확한 것으로 간주됩니다.

Example

var x = 999999999999999;   // x will be 999999999999999
var y = 9999999999999999;  // y will be 10000000000000000
Try it Yourself »

소수의 최대 수는 17 이지만, 부동 소수점 연산(floating point arithmetic)은 항상 100 % 정확하지 않습니다 :

Example

var x = 0.2 + 0.1;         // x will be 0.30000000000000004
Try it yourself »

위의 문제를 해결하기 위해, 곱샘과 나눗샘을 사용할 수 있습니다:

Example

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x will be 0.3
Try it Yourself »

16진수(Hexadecimal) and 8진수(Octal)

JavaScript 는 숫자 상수 앞에 0x 가 오면, 16진수로 해석합니다.

Example

var x = 0xFF;             // x will be 255
Try it Yourself »

Note    숫자를 0으로 시작하지 마십시오. 앞에 0이 오는 경우 자바 스크립트의 일부 버전에서는 8 진수로 숫자를 해석합니다.

기본적으로 Javascript 는 기본 10 진수로 숫자를 표시합니다.

하지만 기16 진수, 8 진수 또는 2 진수로 번호를 출력하기 위해 toString () 메서드를 사용할 수 있습니다.

Example

var myNumber = 128;
myNumber.toString(16);     // returns 80
myNumber.toString(8);      // returns 200
myNumber.toString(2);      // returns 10000000
Try it Yourself »


Infinity

Infinity (or -Infinity) 는 JavaScript 에서 가능한 최대 수 밖의 수를 계산하면 반환하는 값입니다.

Example

var myNumber = 2;
while (myNumber != Infinity) {          // Execute until Infinity
    myNumber = myNumber * myNumber;
}
Try it yourself »

0(zero)으로 나누어도 Infinity 가 발생:

Example

var x =  2 / 0;          // x will be Infinity
var y = -2 / 0;          // y will be -Infinity
Try it Yourself »

Infinity 는 숫자이다: typeOf(Infinity) 는 Number 이다.

Example

typeof Infinity;        // returns "number"
Try it Yourself »


NaN - 숫자가 아님(Not a Number)

NaN NaN 는 값이 숫자가 아닌 것을 나타내는 JavaScript에 예약된 단어입니다.

값이 숫자인지 알기 위해서 글로벌 JavaScript 함수인 isNaN()를 사용할 수 있습니다.

Example

var x = 100 / "Apple"// x will be NaN (Not a Number)
Try it Yourself »

Example

var x = 100 / "10";     // x will be 10
Try it Yourself »

Example

var x = 100 / "Apple";
isNaN(x);               // returns true because x is Not a Number
Try it Yourself »

NaN 를 조심하시오. 수학 연산에 사용되는 경우, 결과는 NaN 가 됩니다. NaN.


Numbers 는 숫자 또는 객체도 될 수 있다

JavaScript 숫자는 var x = 123 처럼 문자로부터 생성된 원시 값(primitive values) 이 될 수 있다. ;

JavaScript 숫자는 또한  var y = new Number(123) 처 럼 new keyword 로 생성된 객체(objects)일 수 도 있다. ;

Example

var x = 123;
var y = new Number(123);

// typeof x returns number
// typeof y returns object
Try it yourself »
Note   Number 객체를 생성하지 마시오. 실행 속도가 느려지며, 바람직하지 않은 부작용이 발생합니다.

Example

var x = 500;             
var y = new Number(500);

// (x == y) is true because x and y have equal values
Try it Yourself »

Note     3.14와 같은 원시 값은 속성과 메서드를 가질 수 없습니다 (객체가 아니기 때문에).
    그러나, JavaScript는 속성과 메서드에 액세스할 때는 원시 값을 객체로 간주합니다.

Test Yourself with Exercises!

Exercise 1 »   Exercise 2 »   Exercise 3 »   Exercise 4 »


Number 속성 및 메서드

3.14 또는 2014 와 같은 원시 값(primitive values)은 (객체가 아니기 때문에) 속성과 메서드를 가질 수 없다. 

하지만 JavaScript 에서는 속성과 메서드가 실행될 때는 원시 값(primitive value)을 객체처럼 취급하기 때문에 원시 값(primitive value)에도 속성과 메서드가 사용가능하다.


Number 속성(Properties)

Property Description
MAX_VALUE Returns the largest number possible in JavaScript
MIN_VALUE Returns the smallest number possible in JavaScript
NEGATIVE_INFINITY Represents negative infinity (returned on overflow)
NaN Represents a "Not-a-Number" value
POSITIVE_INFINITY Represents infinity (returned on overflow)

Example

var x = Number.MAX_VALUE;
Try it yourself »

Number 속성은 Number 라고 부르는 JavaScript의 숫자 객체 랩퍼(wrapper) 의 속성이다.

이러한 속성들은  Number.MAX_VALUE  과 같이만 접근될 수 있다.

myNumber 가 변수,수식, 또는  값(value)일 때, myNumber.MAX_VALUE 는 undefined 를 반환할 것이다.

Example

var x = 6;
var y = x.MAX_VALUE;    // y becomes undefined
Try it yourself »



Number 메서드(Methods)

JavaScript number method 들은 숫자에 사용될 수있는 메서드 들이다.

Method Description
toString() Returns a number as a string
toExponential() Returns a string, with a number rounded and written using exponential notation.
toFixed() Returns a string, with a number rounded and written with a specified number of decimals.
toPrecision() Returns a string, with a number written with a specified length
valueOf() Returns a number as a number
Note   모든 number method 들은 새로운 값을 반환하며, 원래의 값을 변경하지 않는다.

toString() method

toString() method 는 문자열로 숫자를 반환한다.

모든 number method들은 숫자의 어떤 타입(문자형, 변수, 또는 수식)에도 사용될 수 있다.:

Example

var x = 123;
x.toString();            // returns 123 from variable x
(123).toString();        // returns 123 from literal 123
(100 + 23).toString();   // returns 123 from expression 100 + 23
Try it Yourself »


toExponential() method

toExponential() method 는 반올림(rounded)되고 지수형 기호(exponential notaton)를 사용하여 문자열로 반환한다.  

매게변수는 소수젘 뒤의 문자 수를 지정한다:

Example

var x = 9.656;
x.toExponential(2);     // returns 9.66e+0
x.toExponential(4);     // returns 9.6560e+0
x.toExponential(6);     // returns 9.656000e+0
Try it yourself »

매게변수는 선택이며, 지정하지 않으면, JavaScript는 숫자를 반올림하지 않는다.


toFixed() method

toFixed() method 는 지정한 소수점 이하 개 수의 숫자를 문자열로 반환한다. 

Example

var x = 9.656;
x.toFixed(0);           // returns 10
x.toFixed(2);           // returns 9.66
x.toFixed(4);           // returns 9.6560
x.toFixed(6);           // returns 9.656000
Try it yourself »

toPrecision() method

toPrecision() method 는 지정한 길이로 쓰여진 숫자를 문자열로 반환한다. 

Example

var x = 9.656;
x.toPrecision();        // returns 9.656
x.toPrecision(2);       // returns 9.7
x.toPrecision(4);       // returns 9.656
x.toPrecision(6);       // returns 9.65600
Try it Yourself »

변수를 숫자로 변환 : Global Method

JavaScript 전역함수는 모든 JavaScript 데이터 타입에 사용될 수 있다. 

다음은 숫자를 가지고 작업시 가장 관련있는 메서드 들이다.

Method Description
Number() Returns a number, converted from its argument.
parseFloat() Parses its argument and returns a floating point number
parseInt() Parses its argument and returns an integer

Number() Method

Number() method 는 JavaScript변수를 숫자로 변환하는데 사용될 수 있다.

Example

x = true;
Number(x);        // returns 1
x = false;     
Number(x);        // returns 0
x = new Date();
Number(x);        // returns 1404568027739
x = "10"
Number(x);        // returns 10
x = "10 20"
Number(x);        // returns NaN
Try it Yourself »

parseInt() Method

parseInt() method 는 문자열을 구문 분석(parse)하여 숫자를 반환한다. 공백이 허용되며, 오직 첫번째 숫자만 반환된다:

Example

parseInt("10");         // returns 10
parseInt("10.33");      // returns 10
parseInt("10 20 30");   // returns 10
parseInt("10 years");   // returns 10
parseInt("years 10");   // returns NaN 
Try it yourself »

parseFloat() Method

parseFloat() method 는 문자열을 구문 분석(parse)하여 숫자를 반환한다. 공백이 허용되며, 오직 첫번째 숫자만 반환된다:

Example

parseFloat("10");        // returns 10
parseFloat("10.33");     // returns 10.33
parseFloat("10 20 30");  // returns 10
parseFloat("10 years");  // returns 10
parseFloat("years 10");  // returns NaN
Try it yourself »

숫자로 변환할 수 없다면, NaN 를 반환한다.


valueOf() Method

valueOf() method 는 숫자를 숫자로 반환한다.

Example

var x = 123;
x.valueOf();            // returns 123 from variable x
(123).valueOf();        // returns 123 from literal 123
(100 + 23).valueOf();   // returns 123 from expression 100 + 23
Try it Yourself »
JavaScript에서 숫자는 원시값(primitive value) (typeof=number) 일 수 도 있고, 객체(typeof=object) 일 수 도 있다.
valuOf() method는 Number 객체를 원시값(primitive value)으로 변환할 때 JavaScript 내부에서 사용되며, 여러분들의 코드에서 사용할 이유는 없다.


Complete Number Object Reference

Complete Number Object Reference.

The reference contains both descriptions and examples, for each property and method.