이 장에서는 JavaScript에서 숫자와 날짜로 작업하는 방법을 소개합니다.

숫자

JavaScript에서 모든 숫자는 double-precision 64-bit binary format IEEE 754 (즉, -(253 -1)과 253 -1 사이의 숫자)입니다. 정수의 특정 유형은 없습니다. 부동 소수점 숫자를 나타낼 수 있을 뿐 아니라, 숫자 형식은 세 개의 상징적인 값: +Infinity, -Infinity, and NaN(숫자가 아닌 값)을 갖습니다. JavaScript에서 다른 기본형과 문맥에 대한 것은 JavaScript data types and structures를 참조하세요.

여러분은 숫자 리터럴의 네 가지 유형을 사용할 수 있습니다: 10진수, 2진수, 8진수, 16진수

10진수

1234567890
42

// Caution when using leading zeros:

0888 // 10진수 888로 해석됩니다.
0777 // parsed as octal in non-strict mode (511 in decimal)

10진 리터럴은 또 다른 10진수 다음에 영(0)으로 시작할 수 있다는 점에 유의하세요. 하지만 만약 앞에 0 다음 수가 8보다 작으면, 그 수는 8진수로 해석됩니다.

2진수

이진수 구문은 앞에 0 다음에 소문자나 대문자 라틴어 문자 "B"(0b 또는 0B)를 사용합니다. 0b 이후에 숫자가 0 또는 1이 아닌 경우, 다음 구문에러가 발생합니다: "0b 이후 이진 수 누락".

var FLT_SIGNBIT  = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607

8진수

8 진수 구문은 앞에 0을 사용합니다. 0 이후의 숫자가 0에서 7까지 범위 밖에 있는 경우, 숫자는 10진수로 해석됩니다.

var n = 0755; // 493
var m = 0644; // 420

ECMAScript 5의 Strict 모드는 8 진수 구문을 금지합니다. 8 진수 구문은 ECMAScript 5의 일부가 아니지만, 0644 === 420"\ 045"=== "%"의 8 진수에 접두사를 붙이면 모든 브라우저에서 지원됩니다. ECMAScript 2015에서는 접두어가 0o 인 경우 8 진수가 지원됩니다 (예 :

 

var a = 0o10; // ES2015: 8

 

16진수

16진수 구문은 앞에 0 다음에 소문자나 대문자 라틴어 문자 "X"(0x 또는 0X)를 사용합니다. 0X 이후 숫자가 범위(0123456789ABCDEF) 밖에 있는 경우, 다음 구문 에러가 발생합니다: "식별자는 숫자 리터럴 후 즉시 시작됩니다".

0xFFFFFFFFFFFFFFFFF // 295147905179352830000
0x123456789ABCDEF   // 81985529216486900
0XA                 // 10

 

지수 계산

1E3   // 1000
2e6   // 2000000
0.1e2 // 10

 

Number 객체

Number 내장객체는 최대값, not-a-number, 무한대와 같은 숫자 상수를 위한 속성들이 있습니다. 여러분은 이러한 속성의 값을 변경 할 수 없고 다음과 같이 사용합니다:

var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;

여러분은 직접 생성한 Number 객체의 속성이 아닌, 위와같이 항상 미리 정의된 Number 객체의 속성을 참조해야합니다.

다음 표에서는 Number 객체의 속성이 요약되어 있습니다.

Number 속성들
특성 묘사
Number.MAX_VALUE 표현가능한 가장 큰 수
Number.MIN_VALUE 표현가능한 가장 작은 수
Number.NaN "숫자가 아닌" 특수값
Number.NEGATIVE_INFINITY 음의 무한대값; 오버 플로로 반환됨.
Number.POSITIVE_INFINITY 양의 무한대 값; 오버 플로로 반환됨.
Number.EPSILON 표현가능한 매우 작은 값Number.
Number.MIN_SAFE_INTEGER 자바 스크립트에서 안전한 최소의 정수.
Number.MAX_SAFE_INTEGER 자바 스크립트에서 안전한 최대의 정수.
Number 메소드들
방법 묘사
Number.parseFloat() 그리고 부동 소수 점 수를 반환하고 문자열 인수를 구문 분석합니다.
Sam은 글로벌 parseFloat()함수로.
Number.parseInt() 지정된 radix 또는 베이스의 정수를 반환하는 문자열 인수를 구문 분석합니다. 똑같이 글로벌 parseInt()function.
Number.isFinite() 이 전달된 값은 한정 여부를 확인합니다.
Number.isInteger() 이 전달된 값은 정수 여부를 확인합니다.
Number.isNaN() 이 전달된 값 Not-a-Number여부를 확인합니다. 원본 글로벌 (isNaN)의 더욱 강력한 버전이다.
Number.isSafeInteger() 그것은 안전한 정수인지 제공된 가치는 숫자 여부를 확인합니다.

Number 프로토 타입은 다양한 형식의 Number 객체에서 정보를 검색하는 메소드를 제공합니다. 다음 표는 Number.prototype의 메소드를 요약 한 것입니다.

Number.prototype의 방법
방법 Description
toExponential() 지수표기법 안에서 번호를 나타내는 문자열을 반환합니다.
toFixed() 문자열 고정 소수 점 표기법의 수를 나타내는 문자열을 반환합니다.
toPrecision() 지정된 정밀에 고정 소수 점 표기법의 수를 나타내는 문자열을 반환합니다.

Math 객체

내장 Math 객체는 수학 상수 및 함수에 대한 속성 및 메서드를 포함합니다. 예를 들어, Math 객체의 PI 속성에는 pi (3.141 ...) 값이 있습니다.이 값은 응용 프로그램에서 다음과 같이 사용합니다.

Math.PI

, 표준 수학 함수 수학의 방법이 있다. 이것은 삼각 로그 기하급수적 그리고 다른기능들을 포함한다. 예를 들어, 만약 당신이 삼각 함수 사인을 사용하고 싶다면,  이것을 씁니다.

마찬가지로 표준 수학 함수도 Math의 함수입니다. 여기에는 삼각 함수, 로그 함수, 지수 함수 및 기타 함수가 포함됩니다. 예를 들어 삼각 함수 sine을 사용하려면 다음과 같이 작성합니다.

Math.sin(1.56)

Math의 모든 삼각 함수에는 라디안으로 매게변수를 입력해야 합니다.

다음 표에서는 Math 개체의 방법을 요약하였습니다.

Math의 메소드들
방법 묘사
abs() 절대 값
sin(), cos(), tan() 표준 삼각 함수; 라디안에서의 인수
asin(), acos(), atan(), atan2() 역삼각 함수; 라디안에 반환 값
sinh(), cosh(), tanh() 쌍곡삼각함수; 라디안에 반환 값.
asinh(), acosh(), atanh() 역쌍곡삼각함수; 라디안에 반환 값.

pow(), exp()expm1(), log10(), log1p(), log2()

지수와 로그 기능.
floor(), ceil()  가장큰/가장작은 정수 보다 적은/많은 또는 그와 동등한 원칙으로 반환해라.
min(), max() 더적거나 더많은 쉼표의 (각각) 숫자 인수의 나뉜목록으로 반환해라.
random() 0과 1사이의 난수를 반환해라.
round(), fround(), trunc(), 반올림과 절단 기능들.
sqrt(), cbrt(), hypot() 제곱 근, 세 제곱 근, 평방 인수의 합의 제곱 근.
sign() 그 수가 양수인지 음수인지 0인지를 가르키는 숫자의 표시.
clz32(),
imul()
32비트 이진 표시의 주요 제로 비트 수.
그 두 인수의 C-like 32비트 곱셈의 결과.

다른 많은 객체와 달리 자신의 Math 개체를 만들필요가 없습니다. 언제든 내장 된 Math 객체 바로 사용할 수 있습니다.

 

Date 객체

자바 스크립트에는 날짜 데이터 타입이 없습니다. 그러나, Date 객체와 그 메소드를 사용하여 응용 프로그램에서 날짜와 시간을 처리 할 수 ​​있습니다. Date 객체에는 날짜 설정, 가져 오기 및 조작을위한 많은 메소드가 있습니다. 속성(properties)이 없습니다.

자바 스크립트 자바와 비슷하게 날짜를 처리합니다. 두 언어들은 많은 같은 날짜 방법들을 가집니다. 그리고 두 언어들은 1970년 1월 1일 00:00:00부터 밀리초만큼의 데이터들을 저장합니다.

날짜 개체 범위는 -100,000,000일 100,000,000일로 1월, 1970년 협정 세계시에 의해 정해졌습니다.

날짜 개체를 만드는 법.

자바 스크립트는 자바와 비슷하게 날짜를 처리합니다. 두 언어에는 동일한 날짜 메소드가 많으며 두 언어 모두 1970 년 1 월 1 일 00:00:00부터 밀리 초 수로 날짜를 저장합니다. 유닉스 타임 스탬프는 1970 년 1 월 1 일 00:00:00 이후의 초 수입니다.

Date 개체 범위는 UTC 1970 년 1 월 1 일을 기준으로 -100,000,000 일에서 100,000,000 일입니다.

Date 객체를 만들려면 :

var dateObjectName = new Date([parameters]);

여기서 dateObjectName은 만들려는 Date 객체의 이름입니다. 새로운 객체 또는 기존 객체의 속성 일 수 있습니다.

 

new 키워드없이 Date를 호출하면 현재 날짜와 시간을 나타내는 문자열이 반환됩니다.

앞 구문에서 parameters는 아래 규칙을 따릅니다.

  • 아무것도없을때: 오늘의 날짜와 시간을 만듭니다. 예를 들어, today = new Date();.
  • 날짜를 나타내는 문자열의 형식: "Month day, year hours:minutes:seconds."예를 들어, var Xmas95 = new Date("December 25, 1995 13:30:00").만약 당신이 시간, 분, 또는 초를 빠뜨린다면, 값은 0이 됩니다.
  • 정수 값의 연도, 월, 날의 집합입니다. 예를 들어, var Xmas95 = new Date(1995, 11, 25).
  • 연도, 월, 일, 시, 분,초 동안 정수 값의 집합입니다.. 예를 들어, var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);.

Data 개체의 표현 방법

날짜와 시간을 조절하는 Date객체표현 방법은 아래 종류로 나뉩니다:

  • "set" 함수, 날짜 개체 안에서의 날짜 및 시간 값을 설정합니다.
  • "get" 함수, 날짜 개체 안에서의 날짜 및 시간 값을 얻습니다.
  • "to" 함수, 날짜 개체로부터 문자열 값을 반환합니다.
  • Date 문자열을 분석하기위해 parse와 UTC함수를 사용합니다.

 

"get"및 "set"메소드를 사용하여 초, 분,시, 일, 요일, 월 및 연도를 별도로 가져 와서 설정할 수 있습니다. 요일이 자동적으로 설정되기 (위해) 때문에, 요일을 돌려주는 getDay 메소드가 있습니다만, 대응하는 setDay 메소드는 없습니다. 이러한 메서드는 정수를 사용하여 다음과 같이 값을 나타냅니다.

  • 초와 분: 0 to 59
  • 시간: 0 to 23
  • 요일: 0 (Sunday) to 6 (Saturday)
  • 날짜: 1 to 31 (day of the month)
  • 월: 0 (January) to 11 (December)
  • 연도: years since 1900

예를 들어, 아래와 같이 값들을 정의해봅시다 :

var Xmas95 = new Date("December 25, 1995");

그러면 Xmas95.getMonth()는 11을 반환합니다, 그리고 Xmas95.getFullYear()는 1995를 반환합니다.

getTimesetTime방법들은 날짜를 나눌때 유용합니다. getTime함수는 Date객체에 대해 1970년 1월 1일 00:00시부터 밀리초단위로 리턴합니다.

예를 들어, 다음 코드는 현재 년도에 남아 수를 표시합니다:

var today = new Date();
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Set day and month
endYear.setFullYear(today.getFullYear()); // Set year to this year
var msPerDay = 24 * 60 * 60 * 1000; // Number of milliseconds per day
var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); //returns days left in the year

이 예제에는 오늘 날짜가 포함된 today라는 명칭을 가진 Date객체를 만듭니다. 그리고 나서 endYear라는 Date객체를 만들고 현재연도를 설정합니다. 그런 다음 하루에 밀리 초 수를 사용하여 getTime을 사용하고 전체 일 수를 반올림하여 todayendYear 사이의 일 수를 계산합니다.

 

Parse 함수는 날짜문자열부터 기존의 Date객체까지의 값을 할당하기에 유용합니다. 예를 들어, 다음 코드는 그 IPOdate 객체에 날짜값을 할당하기위해 parsesetTime을 사용합니다;

var IPOdate = new Date();
IPOdate.setTime(Date.parse("Aug 9, 1995"));

예제

다음 예제 에서 JSClock()는 digital 시계형식의 시간을 반환합니다.

function JSClock() {
  var time = new Date();
  var hour = time.getHours();
  var minute = time.getMinutes();
  var second = time.getSeconds();
  var temp = "" + ((hour > 12) ? hour - 12 : hour);
  if (hour == 0)
    temp = "12";
  temp += ((minute < 10) ? ":0" : ":") + minute;
  temp += ((second < 10) ? ":0" : ":") + second;
  temp += (hour >= 12) ? " P.M." : " A.M.";
  return temp;
}

JSClock함수는 처음에 time이라 불리는 새로운 Date객체를 만듭니다; 주어진 인수가 없을 때, 시간은 현재의 날짜와 시간으로 만들어집니다. 그리고나서 현재의 시간,분 과 다음 hour, minute, second를 할당하는 getHours, getMinutes, getSeconds함수를 불러옵니다.

다음 4개의 명령어는 시간에 따라 문자열 값을 만듭니다. 첫번째 명령어는 조건식을 이용함과 동시에 그것의 값을 할당하면서 다양한 temp를 만듭니다; 만약 hour가 12보다 크다면, 그렇지않으면 단순히 시간이고, 시간이 0이라면 12가 됩니다.

 

다음 4개의 명령어는 시간을 기준으로 문자열 값을 만듭니다. 첫 번째 명령문은 변수 temp를 작성하고 조건식을 사용하여 값을 할당합니다. hour가 12보다 큰 경우 (hour-12), 그렇지 않으면 (hour), 시간이 0인 경우 시간이 12가 됩니다.

다음 명령어는 minute값을 temp에 붙입니다. 만약 minute의 값이 10보다 작다면, 조건식은 그 전의 0과 함께 문자열은 더합니다; 그렇지 않으면 이것은 구별 콜론과 함께 문자열을 더합니다. 그리고 나서 명령어는 두번째 값을 같은 방식으로 temp에 붙입니다.

마지막으로, 조건식은 hour가 12이거나 더 큰 수이면 temp에 "P.M."이라고 붙입니다. 그렇지 않으면 이것은 temp에 "A.M."이라고 붙입니다.

문서 태그 및 공헌자

이 페이지의 공헌자: limkukhyun, kbsbroad, junoim, wertgw, SooYeonKim
최종 변경자: limkukhyun,