JavaScript๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ซ์๋ฅผ Number
ํ์
์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ํ์ง๋ง Number
ํ์
์ ์์ ํ๊ฒ ํํํ ์ ์๋ ์ต๋ ์ซ์๊ฐ ์ ํ๋์ด ์์ต๋๋ค. ์ด ํ๊ณ๋ฅผ ๋๋ ๋๊ท๋ชจ ์ ์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด BigInt๊ฐ ๋์
๋์์ต๋๋ค. BigInt
๋ ์ ๋ฐ๋๋ฅผ ์ ์งํ๋ฉด์ ์์ฃผ ํฐ ์ ์๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ฐ์ดํฐ ํ์
์
๋๋ค. ์ด ๊ธ์์๋ JavaScript์ BigInt์ ๋ํด ์์ธํ ์์๋ณด๊ณ , ์ด๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
BigInt๋ ๋ฌด์์ธ๊ฐ?
BigInt๋ ์์ฃผ ํฐ ์ ์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ JavaScript์ ์๋ก์ด ๋ฐ์ดํฐ ํ์
์
๋๋ค. JavaScript์ Number
ํ์
์ ์ต๋ ์์ ์ ์ ๋ฒ์๊ฐ ์์ผ๋ฉฐ, ๊ทธ ์ด์์ ์ ํํ๊ฒ ํํํ ์ ์์ต๋๋ค.
- JavaScript์
Number
ํ์ ์ด ์์ ํ๊ฒ ํํํ ์ ์๋ ์ต๋ ๊ฐ:253 - 1
(์ฝ 9,007,199,254,740,991) - ์ต์ ๊ฐ:
-(253 - 1)
์ด ๋ฒ์๋ฅผ ๋์ด์๋ ์ซ์๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด์๋ BigInt
ํ์
์ด ํ์ํฉ๋๋ค. BigInt
๋ ์ ์ ๋ค์ n
์ ๋ถ์ฌ ํํํฉ๋๋ค.
let bigInt = 1234567890123456789012345678901234567890n;
console.log(bigInt); // ๊ฒฐ๊ณผ: 1234567890123456789012345678901234567890n
BigInt์ ์์ฑ ๋ฐฉ๋ฒ
BigInt๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค:
1. ์ซ์ ๋ค์ n
์ ๋ถ์ด๋ ๋ฐฉ๋ฒ
๊ฐ๋จํ๊ฒ ์ซ์ ๋ค์ n
์ ๋ถ์ด๋ฉด BigInt๊ฐ ์์ฑ๋ฉ๋๋ค.
let bigInt = 1000000000000000000n;
console.log(bigInt); // ๊ฒฐ๊ณผ: 1000000000000000000n
2. BigInt()
ํจ์ ์ฌ์ฉ
BigInt()
ํจ์๋ฅผ ์ฌ์ฉํด ๋ฌธ์์ด์ด๋ ์ซ์๋ฅผ ์ธ์๋ก ์ ๋ฌํ๋ฉด BigInt ํ์
์ผ๋ก ๋ณํ๋ฉ๋๋ค.
let bigIntFromString = BigInt("123456789012345678901234567890");
let bigIntFromNumber = BigInt(123456789);
console.log(bigIntFromString); // ๊ฒฐ๊ณผ: 123456789012345678901234567890n
console.log(bigIntFromNumber); // ๊ฒฐ๊ณผ: 123456789n
BigInt์ ํน์ฑ
BigInt๋ JavaScript์ ๊ธฐ์กด Number
ํ์
๊ณผ๋ ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค:
1. Number
์ BigInt
์ ์ฐ์ฐ
๊ธฐ๋ณธ์ ์ผ๋ก Number
ํ์
๊ณผ BigInt
ํ์
๊ฐ์ ์ง์ ์ ์ธ ์ฐ์ฐ์ ํ์ฉ๋์ง ์์ต๋๋ค. ํ์
์ด ๋ค๋ฅธ ๋ ๊ฐ์ ์ฐ์ฐํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
let bigIntValue = 1000n;
let numberValue = 1000;
console.log(bigIntValue + numberValue); // ์ค๋ฅ: Cannot mix BigInt and other types
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด BigInt()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ Number
๋ฅผ BigInt
๋ก ๋ณํํ๊ฑฐ๋, Number()
ํจ์๋ฅผ ์ฌ์ฉํด BigInt
๋ฅผ Number
๋ก ๋ณํํด์ผ ํฉ๋๋ค.
let sum = bigIntValue + BigInt(numberValue);
console.log(sum); // ๊ฒฐ๊ณผ: 2000n
2. ์์์ ์ฐ์ฐ ์ง์ํ์ง ์์
BigInt๋ ์ ์๋ง ์ง์ํ๋ฉฐ, ์์์ ์ด ์๋ ๊ฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์์์ ์ ํฌํจํ ์ซ์์์ ์ฐ์ฐ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค.
let bigIntValue = 1234n;
let floatValue = 12.34;
console.log(bigIntValue + BigInt(floatValue)); // ์ค๋ฅ ๋ฐ์: Cannot convert a non-integer number to a BigInt
3. ํฐ ์ซ์์ ์ ํํ ํํ
BigInt๋ ๋งค์ฐ ํฐ ์ซ์๋ ์ ํํ๊ฒ ํํํ ์ ์์ต๋๋ค. Number
ํ์
์์๋ ํฐ ์ซ์์ ์ ๋ฐ๋๊ฐ ๋จ์ด์ง์ง๋ง, BigInt
๋ ๋ฌด์ ํ ํฌ๊ธฐ์ ์ ์๋ฅผ ์ ๋ฐํ๊ฒ ํํํ ์ ์์ต๋๋ค.
let numberValue = 999999999999999999999999;
let bigIntValue = 999999999999999999999999n;
console.log(numberValue); // ๊ฒฐ๊ณผ: 1e+21 (์ ๋ฐ๋ ์์ค)
console.log(bigIntValue); // ๊ฒฐ๊ณผ: 999999999999999999999999n (์ ํํ ๊ฐ)
BigInt์ ๋น๊ต ์ฐ์ฐ
BigInt๋ Number
์ ๋ฌ๋ฆฌ ๋งค์ฐ ํฐ ์ ์๋ ์์ ํ๊ฒ ๋น๊ตํ ์ ์์ต๋๋ค. ํ์ง๋ง Number
์ BigInt
๋ฅผ ์ง์ ๋น๊ตํ๋ ๊ฒฝ์ฐ์๋ ์๋์ผ๋ก ํ์
๋ณํ์ด ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
let bigIntValue = 10n;
let numberValue = 10;
console.log(bigIntValue === BigInt(numberValue)); // ๊ฒฐ๊ณผ: true
console.log(bigIntValue == numberValue); // ๊ฒฐ๊ณผ: true (ํ์
๋ณํ์ด ์ด๋ฃจ์ด์ง)
console.log(bigIntValue === numberValue); // ๊ฒฐ๊ณผ: false (ํ์
์ด ๋ค๋ฆ)
BigInt์ Math
๊ฐ์ฒด
Math
๊ฐ์ฒด๋ BigInt
ํ์
์ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Math
๊ด๋ จ ํจ์๋ Number
ํ์
๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
let bigIntValue = 1000n;
console.log(Math.sqrt(bigIntValue)); // ์ค๋ฅ ๋ฐ์: BigInt๋ ์ง์ํ์ง ์์
์ด ๊ฒฝ์ฐ, Number()
๋ฅผ ์ฌ์ฉํด BigInt
๋ฅผ Number
๋ก ๋ณํํ ํ Math
ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
let sqrtValue = Math.sqrt(Number(bigIntValue));
console.log(sqrtValue); // ๊ฒฐ๊ณผ: 31.622776601683793
BigInt์ ํ์ฉ ์ฌ๋ก
BigInt
๋ ๋งค์ฐ ํฐ ์ ์๋ฅผ ๋ค๋ฃจ๋ ์์
์์ ํ์์ ์
๋๋ค. ์ํธํ, ์ ๋ฐํ ๊ณผํ์ ๊ณ์ฐ, ๊ธ์ต ์ ํ๋ฆฌ์ผ์ด์
๋ฑ์์ BigInt
๋ ํ์์ ์ธ ์ญํ ์ ํฉ๋๋ค. ํนํ, ์ ๋ฐํ ๊ณ์ฐ์ด ์๊ตฌ๋๋ ๊ธ์ต ๋ฐ ์ํธํ ์์คํ
์์ BigInt
๋ ํฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๊ฒฐ๋ก
JavaScript์ BigInt
๋ ๋งค์ฐ ํฐ ์ ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฐ๋ ฅํ ๋ฐ์ดํฐ ํ์
์
๋๋ค. Number
ํ์
์ ํ๊ณ๋ฅผ ๋๋ ํฐ ์ซ์๋ฅผ ์ ํํ๊ฒ ๋ค๋ฃจ์ด์ผ ํ ๋ ์ ์ฉํ๋ฉฐ, ํ์
๋ณํ๊ณผ ๋น๊ต ์ฐ์ฐ์์ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. BigInt
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ๊ณ ์ ๋ฐํ ๊ณ์ฐ์ ํ์๋ก ํ๋ ํ๋ก์ ํธ์์ ํ์ฉํด ๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ