2011-12-27 4 views
6

longList<string> 속성을 가진 개체를 반환하는 WCF 서비스 작업이 있습니다. WCF 응용 프로그램에서 작업을 테스트 할 때 모든 것이 올바르게 작동하고 값이 정확합니다. 그러나 jQuery 및 JSON 형식을 사용하여 서비스를 호출 할 수 있어야합니다. long 속성의 값은 OnSucceed 함수에서 다시 읽으면 변경됩니다.큰 숫자의 JSON.Stringify()가 숫자 값을 변경합니까?

검색 후 나는 JSON.stringify이 큰 값을 변경한다는 것을 발견했습니다. 따라서 다음과 같은 코드에서 :

alert(JSON.stringify(25001509088465005)); 

... 값은 25001509088465004으로 표시됩니다.

현재 무슨 일입니까? 여기

데모 : http://jsfiddle.net/naveen/tPKw7/

+0

질문을 명확히하십시오. –

+0

그냥 위의 자바 스크립트 코드를 테스트하여 보낸 내용과 JSON.stringify가 반환 한 내용을 확인하십시오. –

+2

자바 스크립트의 정밀도 제한으로 인해 숫자 유형. 또한보십시오 : http://stackoverflow.com/questions/588004/is-javascripts-math-broken – mbarkhau

답변

4

자바 스크립트 IEEE-754 배정 밀도 (64 비트) 형식을 사용하여 숫자를 나타냅니다. 내가 이해하기에 이것은 53 비트 정밀도 또는 십진수에서 16 진수를 제공합니다. 귀하의 전화 번호는 JavaScript가 처리 할 수있는 숫자보다 많기 때문에 근사치가됩니다.

큰 숫자에 대해 수학 연산을 수행해야합니까? ID의 일종의 ID라면 문자열로 반환하여 문제를 피할 수 있기 때문입니다.

+0

그래,하지만 길게는 갖고 싶었지만 마침내 문자열로 받았다. –

+0

JavaScript에는 "long"데이터 유형이없고 Number 만 있습니다. –

+0

예, 명시 적으로 "자바 스크립트는 _all_ 숫자를 사용하여 나타냅니다."라고 말해야합니다. – nnnnnn

관련 문제