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 형의 연산을 위한 메소드도 따로 있다고 한다... 언젠가 쓸날이... 안오면 좋겠다
자바스크립트로 코딩테스트 풀기 이거 정말 이야... 이야 참 허헛 억지로 몸비틀면서 통과하는 기분이다
배울수록 벡엔드에 다른 언어를 선호하는 이유를 알겠다...
그러네... 뇌를 뇌세포가 아닌 근육으로 만들어서 움직이고 생각하는 기분이다 답답하다 하하하
'JavaScript > 기초 및 알고리즘 함수' 카테고리의 다른 글
자바스크립트 에서 set 으로 중복 제거가 안될때 (0) | 2022.08.30 |
---|---|
filter 함수 사용법 (0) | 2022.08.12 |
빈 문자열을 split 하면 빈 문자열이 담긴 배열을 리턴한다 (0) | 2022.08.12 |
split 으로 나눌때 공백이 두 개 이상일 경우 (0) | 2022.08.12 |
[JS] for in , for of 차이 (0) | 2022.08.10 |
댓글