자바 스크립트 트위터 앱이 있습니다. 파이어 버그에서 tweetid를 보면 344203233524330497이 반환되지만 자바 스크립트로 평가하면 344203233524330500 (마지막 두 숫자가 반올림 됨)이 반환됩니다.Javascript JSON에서 숫자 문자열 반올림
무슨 일입니까?
아이디어가 있으십니까?
고마워요! 자바 스크립트 정밀도 부족이에 대한 부동 소수점 숫자를 사용 있도록
자바 스크립트 트위터 앱이 있습니다. 파이어 버그에서 tweetid를 보면 344203233524330497이 반환되지만 자바 스크립트로 평가하면 344203233524330500 (마지막 두 숫자가 반올림 됨)이 반환됩니다.Javascript JSON에서 숫자 문자열 반올림
무슨 일입니까?
아이디어가 있으십니까?
고마워요! 자바 스크립트 정밀도 부족이에 대한 부동 소수점 숫자를 사용 있도록
자바 스크립트에서 정수는 64 비트 숫자입니다. 즉, 가장 큰 정수는 2 , 즉 9007199254740992
입니다. 이보다 더 높은 숫자는 정확하지 않을 것입니다. 내부적으로 저장된 방식의 결과로 "반올림"이 일부 나타날 것입니다.
이 문자열을 숫자로 명확하게 평가하고 있습니다. 정확하게 유지하려면 숫자로 변환하고 문자열로 유지하지 않아야합니다. JS에서 숫자의 정확성에 대한 자세한 내용은
,의도적으로 숫자로 평가하지 않습니다. 나는 단순히 tweet.id_str (tweet은 JSON 객체로부터 아이템을 받는다. id_str은 트위터로부터받은 tweetid이다). 문자열로 보도록 강요 할 수 있습니까? tweet.id_str.toString() 시도하고 작동하지 않습니다. –
JSON을 어떻게 받고 있습니까? JSON 번호는 변환 될 때 항상 자바 스크립트 번호가됩니다. – lonesomeday
@resonantmedia 예제 JSON 응답과 관련 코드를 게시하여 처리 할 수 있습니까? – Sirko
자바 스크립트 정밀도를 잃지 않고 나타낼 수있는 최대 정수 값은 9007199254740992.
당신의 숫자가 분명히 더 큰 것입니다. 그래서이 경우 마지막 두 숫자가 반올림 된 것처럼 보입니다.
문자열 표현을 사용하거나 실제 숫자 값을 사용해야하는 경우 일부 BigMath 라이브러리를 참조하십시오.
참조 [이] (http://stackoverflow.com/questions/1725341/javascript-large-number-library) – OzrenTkalcecKrznaric
당신은 주위에 ""를 사용한다하여 번호. 이 방법으로, 자바 스크립트는 문자열로 작동합니다. –