2013-06-10 3 views
4

자바 스크립트 트위터 앱이 있습니다. 파이어 버그에서 tweetid를 보면 344203233524330497이 반환되지만 자바 스크립트로 평가하면 344203233524330500 (마지막 두 숫자가 반올림 됨)이 반환됩니다.Javascript JSON에서 숫자 문자열 반올림

무슨 일입니까?

아이디어가 있으십니까?

고마워요! 자바 스크립트 정밀도 부족이에 대한 부동 소수점 숫자를 사용 있도록

+1

참조 [이] (http://stackoverflow.com/questions/1725341/javascript-large-number-library) – OzrenTkalcecKrznaric

+0

당신은 주위에 ""를 사용한다하여 번호. 이 방법으로, 자바 스크립트는 문자열로 작동합니다. –

답변

3

자바 스크립트에서 정수는 64 비트 숫자입니다. 즉, 가장 큰 정수는 2 , 즉 9007199254740992입니다. 이보다 더 높은 숫자는 정확하지 않을 것입니다. 내부적으로 저장된 방식의 결과로 "반올림"이 일부 나타날 것입니다.

이 문자열을 숫자로 명확하게 평가하고 있습니다. 정확하게 유지하려면 숫자로 변환하고 문자열로 유지하지 않아야합니다. JS에서 숫자의 정확성에 대한 자세한 내용은

See this answer

,

+0

의도적으로 숫자로 평가하지 않습니다. 나는 단순히 tweet.id_str (tweet은 JSON 객체로부터 아이템을 받는다. id_str은 트위터로부터받은 tweetid이다). 문자열로 보도록 강요 할 수 있습니까? tweet.id_str.toString() 시도하고 작동하지 않습니다. –

+0

JSON을 어떻게 받고 있습니까? JSON 번호는 변환 될 때 항상 자바 스크립트 번호가됩니다. – lonesomeday

+0

@resonantmedia 예제 JSON 응답과 관련 코드를 게시하여 처리 할 수 ​​있습니까? – Sirko

3

자바 스크립트 정밀도를 잃지 않고 나타낼 수있는 최대 정수 값은 9007199254740992.

당신의 숫자가 분명히 더 큰 것입니다. 그래서이 경우 마지막 두 숫자가 반올림 된 것처럼 보입니다.

문자열 표현을 사용하거나 실제 숫자 값을 사용해야하는 경우 일부 BigMath 라이브러리를 참조하십시오.