Javascript 정수 계산 삽질기 공유

Jung-taek Lim
2 min readNov 26, 2015

--

Imported from Agit

Javascript 익숙하신 분들은 아실 듯한 문제인데요.

작업 끄적대다가 정수 연산이 뭔가 잘 안되어서 보니, Javascript 언어 스펙 자체에 이슈가 있네요.

Javascript 가 숫자 형식을 double 로만 취급해서 일정 이상의 정수를 다루면 precision 이슈가 있습니다.
http://speakingjs.com/es5/ch11.html
long integer 값이 Javascript 통해서 정확하게 보이지 않는 건 JSON 보여주는 플러그인 등에 이슈가 있는 게 아니라 Javascript 의 한계라는…

결과적으로, 안전하게 Integer 형 연산이 가능한 범위가 정해져 있어요. (-2⁵³ < n < 2⁵³)
http://speakingjs.com/es5/ch11.html#safe_integers

작업하려던 건 shift operation 이었는데, 연산 결과가 32bit 로 리턴된대서 못 써먹고…
timestamp 에 강제로 2¹⁶ 을 곱했는데 precision 이슈 때문에 값이 틀어지더라구요.
AJAX 로 서버 사이드에서 계산을 하는 쪽으로 처리하려고 합니다.

혹시 Javascript 에서 큰 정수 값을 다루시면 참고하세요~

--

--

No responses yet