본문 바로가기
JavaScript/기초 및 알고리즘 함수

[JS] 큰 수의 사용 시 BigInt 로 형변환

by tokkiC 2022. 8. 14.

c++ 에서는 큰 수를 표현할때 longlong 자료형이 있고

파이썬은 큰 수여도 그냥 알아서 찰떡같이 알아듣는데...

이 빡대가리 자바스크립트는 BigInt 라는 형변환을 해줘야 큰 수의 연산이 가능하다!!!

아오 자바스크립트 또냐 넌 대체$#%#@

너무너무 큰 수라면 c++도 맞는 숫자 자료형이 없으니 자바스크립트도 문자열로 바꿔서 연산해야겠지만

우리 부족하신 자바스크립트님은c++의  long long 범위의 해당하는 자료형도 없으셔서 

21억 까지인 int 형을 넘어가면 c++의 long long 의 범위를 가지는 BigInt를 사용해서 수를 표현해야 하는데

BigInt는 숫자 자료형이 아닌  독립된 Object 객체이므로, js 내장 함수를 통한 대부분의 연산은 사용 할 수 없다

Math. 로 시작하는 내장함수들은 당연히 안되고 다른 숫자 자료형과 연산도 안되고 BigInt 지들끼리만 가능하다

c++에서 소수점 숫자의 자료형을 나타낼때 0.4f 처럼 수의 뒤에 f를 붙이듯이

BigInt는 뒤에 n 을 붙인다     //  BigInt(3) === 3n   BigInt(3)이 귀찮으니 그냥 3n 으로 써도 된다

BigInt끼리의 연산시 0이 나와도 0뒤에도 n 을 붙어야 에러가 나지 않는다   //  0 === 0n  // false     0 == 0n // true

또한 소수점은 아래는 버리고 정수만 취한다. 하하하    // BigInt(2.5) === 2n

만약 BigInt 이상의 범위일 시 c++과 마찬가지로 문자열로 바꿔서 풀어야 할 것이다...

Object 자료형이지만 조건식에서는 숫자처럼 사용되어지며...    // 0n === false  // 2n === true  

숫자 자료형과 함께 n없는 크기로 정렬도 가능하다 놀라워라

n을 떼고 일반 숫자형으로 돌아가려면 parseInt 나 Number로 숫자형으로 형변환 시켜주면 된다

해당 BigInt 형의 연산을 위한 메소드도 따로 있다고 한다... 언젠가 쓸날이... 안오면 좋겠다

자바스크립트로 코딩테스트 풀기 이거 정말 이야... 이야 참 허헛 억지로 몸비틀면서 통과하는 기분이다 

배울수록 벡엔드에 다른 언어를 선호하는 이유를 알겠다...

그러네... 뇌를 뇌세포가 아닌 근육으로 만들어서 움직이고 생각하는 기분이다 답답하다 하하하

자바스크립트 *신이야    응 나도 알아

댓글