This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

์ˆซ์ž์™€ ๋‚ ์งœ

์ด ์žฅ์—์„œ๋Š” JavaScript์—์„œ ์ˆซ์ž์™€ ๋‚ ์งœ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋…๊ณผ ๊ฐ์ฒด, ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ˆซ์ž๋ฅผ 10์ง„๋ฒ•, 2์ง„๋ฒ•, 16์ง„๋ฒ• ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋”๋ถˆ์–ด Math ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค์–‘ํ•œ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆซ์ž

JavaScript์—์„œ ๋ชจ๋“  ์ˆซ์ž๋Š” double-precision 64-bit binary format IEEE 754 (์ฆ‰, ยฑ2^โˆ’1022 ๊ณผ ยฑ2^+1023 ๋˜๋Š” ๋Œ€๋žต ยฑ10^โˆ’308 to ยฑ10^+308 ์‚ฌ์ด์˜ ์ˆซ์ž์ด๋ฉฐ 53bits์˜ ์ˆ˜์น˜์ •๋ฐ€๋„ )๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ยฑ2^53 - 1๊นŒ์ง€์˜ ์ •์ˆ˜ ๊ฐ’์„ ์ •ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ˆซ์ž ํ˜•์‹์€ ์„ธ ๊ฐœ์˜ ์ƒ์ง•์ ์ธ ๊ฐ’: +Infinity, -Infinity, and NaN (์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’)์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

JavaScript์— ์ตœ๊ทผ ์ถ”๊ฐ€ ๋œ ๊ฒƒ์€ BigInt๋กœ, ๋งค์šฐ ํฐ ์ •์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BigInt๋ฅผ์‚ฌ์šฉํ• ๋• ๋‹ค์Œ์„ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, BigInt์™€ Number ๊ฐ’์„ ๊ฐ™์€ ์—ฐ์‚ฐ์œผ๋กœ ํ˜ผํ•ฉํ•˜๊ณ  ์ผ์น˜์‹œํ‚ฌ ์ˆ˜๋Š” ์—†์œผ๋ฉฐ Math ๊ฐ์ฒด๋ฅผ BigInt๊ฐ’๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

JavaScript์—์„œ ๋‹ค๋ฅธ ๊ธฐ๋ณธํ˜•๊ณผ ๋ฌธ๋งฅ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ JavaScript data types and structures๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์—ฌ๋Ÿฌ๋ถ„์€ ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด์˜ ๋„ค ๊ฐ€์ง€ ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: 10์ง„์ˆ˜, 2์ง„์ˆ˜, 8์ง„์ˆ˜, 16์ง„์ˆ˜

10์ง„์ˆ˜

js
1234567890;
42;

// ์•ž์— 0์ด ๋ถ™์€ ์ˆซ์ž๋ฅผ ์กฐ์‹ฌํ•˜์„ธ์š”:

0888; // 10์ง„์ˆ˜ 888๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.
0777; // non-strict mode์—์„œ 10์ง„์ˆ˜ 511๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

10์ง„์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋„ ์˜(0)์œผ๋กœ ์‹œ์ž‘๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ ์˜0 ๋‹ค์Œ ์ˆซ์ž๊ฐ€ 8๋ณด๋‹ค ์ž‘์œผ๋ฉด, ๊ทธ ์ˆซ์ž๋Š” 8์ง„๋ฒ•์œผ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

2์ง„์ˆ˜

2์ง„์ˆ˜ ๊ตฌ๋ฌธ์€ ์•ž์— ์˜ค๋Š” 0๊ณผ ์†Œ๋ฌธ์ž ๋˜๋Š” ๋Œ€๋ฌธ์ž ๋ผํ‹ด ๋ฌธ์ž "B"(0B ๋˜๋Š” 0b)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 0b ๋‹ค์Œ์˜ ์ˆซ์ž๊ฐ€ 0 ๋˜๋Š” 1์ด ์•„๋‹ˆ๋ฉด ๋‹ค์Œ์˜ SyntaxError๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. "0b ์ดํ›„์— ๋ˆ„๋ฝ ๋œ 2 ์ง„์ˆ˜"("Missing binary digits after 0b")์ž…๋‹ˆ๋‹ค.

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

8์ง„์ˆ˜

8 ์ง„์ˆ˜ ๊ตฌ๋ฌธ์€ ์•ž์— 0์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 0 ์ดํ›„์˜ ์ˆซ์ž๊ฐ€ 0์—์„œ 7๊นŒ์ง€ ๋ฒ”์œ„ ๋ฐ–์— ์žˆ๋Š” ๊ฒฝ์šฐ, ์ˆซ์ž๋Š” 10์ง„์ˆ˜๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

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

ECMAScript 5์˜ Strict ๋ชจ๋“œ๋Š” 8 ์ง„์ˆ˜ ๊ตฌ๋ฌธ์„ ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. 8 ์ง„์ˆ˜ ๊ตฌ๋ฌธ์€ ECMAScript 5์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ, 0644 === 420 ๋ฐ "\ 045"=== "%"์˜ 8 ์ง„์ˆ˜์— ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ด๋ฉด ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ECMAScript 2015์—์„œ๋Š” ์ ‘๋‘์–ด๊ฐ€ 0o์ธ ๊ฒฝ์šฐ 8 ์ง„์ˆ˜๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค (์˜ˆ :

javascript
var a = 0o10; // ES2015: 8

16์ง„์ˆ˜

16์ง„์ˆ˜ ๊ตฌ๋ฌธ์€ ์•ž์— 0 ๋‹ค์Œ์— ์†Œ๋ฌธ์ž๋‚˜ ๋Œ€๋ฌธ์ž ๋ผํ‹ด์–ด ๋ฌธ์ž "X"(0x ๋˜๋Š” 0X)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 0X ์ดํ›„ ์ˆซ์ž๊ฐ€ ๋ฒ”์œ„(0123456789ABCDEF) ๋ฐ–์— ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ SyntaxError๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค: "์‹๋ณ„์ž๋Š” ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด ํ›„ ์ฆ‰์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค".

js
0xfffffffffffffffff; // 295147905179352830000
0x123456789abcdef; // 81985529216486900
0xa; // 10

์ง€์ˆ˜ ๊ณ„์‚ฐ

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

Number ๊ฐ์ฒด

Number ๋‚ด์žฅ๊ฐ์ฒด๋Š” ์ตœ๋Œ€๊ฐ’, not-a-number, ๋ฌดํ•œ๋Œ€์™€ ๊ฐ™์€ ์ˆซ์ž ์ƒ์ˆ˜๋ฅผ ์œ„ํ•œ ์†์„ฑ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์ด๋Ÿฌํ•œ ์†์„ฑ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์—†๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

js
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.MAX_VALUE ํ‘œํ˜„๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ํฐ ์ˆ˜ (ยฑ1.7976931348623157e+308)
Number.MIN_VALUE ํ‘œํ˜„๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜(ยฑ5e-324)
Number.NaN "์ˆซ์ž๊ฐ€ ์•„๋‹Œ" ํŠน์ˆ˜๊ฐ’
Number.NEGATIVE_INFINITY ์Œ์˜ ๋ฌดํ•œ๋Œ€๊ฐ’; ์˜ค๋ฒ„ ํ”Œ๋กœ๋กœ ๋ฐ˜ํ™˜๋จ.
Number.POSITIVE_INFINITY ์–‘์˜ ๋ฌดํ•œ๋Œ€ ๊ฐ’; ์˜ค๋ฒ„ ํ”Œ๋กœ๋กœ ๋ฐ˜ํ™˜๋จ.
Number.EPSILON ํ‘œํ˜„๊ฐ€๋Šฅํ•œ ๋งค์šฐ ์ž‘์€ ๊ฐ’Number.(2.220446049250313e-16)
Number.MIN_SAFE_INTEGER JavaScript์—์„œ ์•ˆ์ „ํ•œ ์ตœ์†Œ์˜ ์ •์ˆ˜.(โˆ’2^53 + 1, or โˆ’9007199254740991)
Number.MAX_SAFE_INTEGER JavaScript์—์„œ ์•ˆ์ „ํ•œ ์ตœ๋Œ€์˜ ์ •์ˆ˜.(+2^53 โˆ’ 1, or +9007199254740991)
Number ๋ฉ”์†Œ๋“œ๋“ค
๋ฐฉ๋ฒ• ๋ฌ˜์‚ฌ
Number.parseFloat()

๋ฌธ์ž์—ด ์ธ์ˆ˜๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ parseFloat() ํ•จ์ˆ˜์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

Number.parseInt() ๋ฌธ์ž์—ด ๋ผ์ธ ์ธ์ˆ˜๋ฅผ ํŒŒ์‹ฑํ•ด, ์ง€์ •๋œ ๊ธฐ์ˆ˜ ๋˜๋Š” ๋ฐ‘์ค„์˜ ์ •์ˆ˜๋ฅผ ๋Œ๋ ค์ค๋‹ˆ๋‹ค. ์ „์—ญ parseInt()ํ•จ์ˆ˜์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
Number.isFinite() ์ „๋‹ฌ๋œ ๊ฐ’์ด ์œ ํ•œํ•œ ์ˆ˜์ธ์ง€ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค.
Number.isInteger() ์ „๋‹ฌ๋œ ๊ฐ’์ด ์ •์ˆ˜์ธ์ง€ ํŒ์ •ํ•ฉ๋‹ˆ๋‹ค.
Number.isNaN() ์ด ์ „๋‹ฌ๋œ ๊ฐ’ Not-a-Number์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ ๊ธ€๋กœ๋ฒŒ (isNaN)์˜ ๋”์šฑ ๊ฐ•๋ ฅํ•œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
Number.isSafeInteger() ์ œ๊ณต๋œ ๊ฐ’์ด ์•ˆ์ „ํ•œ ์ •์ˆ˜์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Number ํ”„๋กœํ†  ํƒ€์ž…์€ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ Number ๊ฐ์ฒด์—์„œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ๋Š” Number.prototype์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์š”์•ฝ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• Description
toExponential() ์ง€์ˆ˜ํ‘œ๊ธฐ๋ฒ• ์•ˆ์—์„œ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
toFixed() ๋ฌธ์ž์—ด ๊ณ ์ • ์†Œ์ˆ˜ ์  ํ‘œ๊ธฐ๋ฒ•์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
toPrecision() ์ง€์ •๋œ ์ •๋ฐ€์— ๊ณ ์ • ์†Œ์ˆ˜ ์  ํ‘œ๊ธฐ๋ฒ•์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Math ๊ฐ์ฒด

๋‚ด์žฅ Math ๊ฐ์ฒด๋Š” ์ˆ˜ํ•™ ์ƒ์ˆ˜ ๋ฐ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Math ๊ฐ์ฒด์˜ PI ์†์„ฑ์—๋Š” pi (3.141 ...) ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด ๊ฐ’์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

js
Math.PI;

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ‘œ์ค€ ์ˆ˜ํ•™ ํ•จ์ˆ˜๋„ Math์˜ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์‚ผ๊ฐ ํ•จ์ˆ˜, ๋กœ๊ทธ ํ•จ์ˆ˜, ์ง€์ˆ˜ ํ•จ์ˆ˜ ๋ฐ ๊ธฐํƒ€ ํ•จ์ˆ˜๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ผ๊ฐ ํ•จ์ˆ˜ sine์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

js
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 ๊ฐ์ฒด

JavaScript์—๋Š” ๋‚ ์งœ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, Date ๊ฐ์ฒด์™€ ๊ทธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Date ๊ฐ์ฒด์—๋Š” ๋‚ ์งœ ์„ค์ •, ๊ฐ€์ ธ ์˜ค๊ธฐ ๋ฐ ์กฐ์ž‘์„์œ„ํ•œ ๋งŽ์€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ(properties)์ด ์—†์Šต๋‹ˆ๋‹ค.

JavaScript๋Š” ์ž๋ฐ”์™€ ๋น„์Šทํ•˜๊ฒŒ ๋‚ ์งœ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์–ธ์–ด์—๋Š” ๋™์ผํ•œ ๋‚ ์งœ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋งŽ์œผ๋ฉฐ ๋‘ ์–ธ์–ด ๋ชจ๋‘ 1970 ๋…„ 1 ์›” 1 ์ผ 00:00:00 ์ดํ›„์˜ ๋ฐ€๋ฆฌ ์ดˆ ์ˆ˜๋กœ ๋‚ ์งœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์œ ๋‹‰์Šค ํƒ€์ž„ ์Šคํƒฌํ”„๋Š” 1970 ๋…„ 1 ์›” 1 ์ผ 00:00:00 ์ดํ›„์˜ ์ดˆ ์ˆ˜์ž…๋‹ˆ๋‹ค.

Date ๊ฐœ์ฒด ๋ฒ”์œ„๋Š” UTC 1970 ๋…„ 1 ์›” 1 ์ผ์„ ๊ธฐ์ค€์œผ๋กœ -100,000,000 ์ผ์—์„œ 100,000,000 ์ผ์ž…๋‹ˆ๋‹ค.

Date ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด :

js
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

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’๋“ค์„ ์ •์˜ํ•ด๋ด…์‹œ๋‹ค :

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

๊ทธ๋Ÿฌ๋ฉด Xmas95.getMonth()๋Š” 11์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ  Xmas95.getFullYear()๋Š” 1995๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

getTime๊ณผ setTime๋ฐฉ๋ฒ•๋“ค์€ ๋‚ ์งœ๋ฅผ ๋‚˜๋ˆŒ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. getTimeํ•จ์ˆ˜๋Š” Date๊ฐ์ฒด์— ๋Œ€ํ•ด 1970๋…„ 1์›” 1์ผ 00:00์‹œ๋ถ€ํ„ฐ ๋ฐ€๋ฆฌ์ดˆ๋‹จ์œ„๋กœ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ์ฝ”๋“œ๋Š” ํ˜„์žฌ ๋…„๋„์— ๋‚จ์•„ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:

js
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์„ ์‚ฌ์šฉํ•˜๊ณ  ์ „์ฒด ์ผ ์ˆ˜๋ฅผ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ today์™€ endYear ์‚ฌ์ด์˜ ์ผ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

Parse ํ•จ์ˆ˜๋Š” ๋‚ ์งœ๋ฌธ์ž์—ด๋ถ€ํ„ฐ ๊ธฐ์กด์˜ Date๊ฐ์ฒด๊นŒ์ง€์˜ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ธฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ์ฝ”๋“œ๋Š” ๊ทธ IPOdate ๊ฐ์ฒด์— ๋‚ ์งœ๊ฐ’์„ ํ• ๋‹นํ•˜๊ธฐ์œ„ํ•ด parse์™€ setTime์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค;

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

์˜ˆ์ œ

๋‹ค์Œ ์˜ˆ์ œ ์—์„œ JSClock()๋Š” digital ์‹œ๊ณ„ํ˜•์‹์˜ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
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 ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์œผ๋กœ ์‹œ๊ฐ„์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ getHours, getMinutes ๋ฐ getSeconds ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ˜„์žฌ ์‹œ๊ฐ„, ๋ถ„ ๋ฐ ์ดˆ ๊ฐ’์ดhour, minute, second๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋„ค ๋ฌธ์žฅ์€ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด ๊ฐ’์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ช…๋ น๋ฌธ์€ ๋ณ€์ˆ˜ temp๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์กฐ๊ฑด์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. hour๊ฐ€ 12๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ (hour - 12), ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด 12 ์ผ ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด 12๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น๋ฌธ์€ temp ๊ฐ’์— minute ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„(minute)์˜ ๊ฐ’์ด 10๋ณด๋‹ค ์ž‘ ์œผ๋ฉด ์กฐ๊ฑด์‹์€ ์•ž์— 0์ด ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ฝœ๋ก ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ temp์— ์ดˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์กฐ๊ฑด๋ถ€ ํ‘œํ˜„์‹์— "P.M."์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„(hour)์ด 12 ์‹œ๊ฐ„ ์ด์ƒ์ด๋ฉด ์ž„์‹œ(temp)๋กœ; ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "A.M."์„ temp์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.