>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 JSON.parse()를 사용할 때 큰 숫자가 잘리는 이유는 무엇입니까?

JavaScript에서 JSON.parse()를 사용할 때 큰 숫자가 잘리는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-24 04:17:14366검색

Why are Large Numbers Truncated When Using JSON.parse() in JavaScript?

JavaScript에서 큰 숫자가 잘못 잘림

JSON 문자열에서 구문 분석할 때 714341252076979033과 같은 큰 숫자가 잘못 반올림되는 이유에 대한 의문이 생깁니다. JSON.parse()를 사용합니다. 콘솔의 결과 값은 유효 숫자가 제거된 잘린 숫자로 표시됩니다.

답변

이 현상은 JavaScript의 숫자 유형이 IEEE-754를 기반으로 하기 때문에 발생합니다. 배정밀도 부동 소수점은 큰 정수를 표현하는 데 제한이 있습니다. 배정밀도 부동 소수점의 최대 안전 정수 값은 9,007,199,254,740,991(Number.MAX_SAFE_INTEGER)입니다. 이 지점을 넘어서면 부동 소수점 표현의 정밀도가 감소하여 연속된 정수가 반올림됩니다.

이 특정 사례에서 구문 분석되는 큰 숫자는 상당한 여유만큼 Number.MAX_SAFE_INTEGER를 초과합니다. 결과적으로 JavaScript에서 사용하는 반올림 알고리즘은 부동 소수점 시스템의 제한 내에서 숫자를 최대한 가깝게 표현하기 위해 최하위 숫자를 자릅니다.

해결 방법

이 문제를 방지하려면 JavaScript 숫자 유형의 용량을 초과하는 큰 정수를 나타내는 데 BigInt를 사용하는 것이 좋습니다. BigInt는 ES2020에 추가된 임의 길이의 정수를 처리할 수 있는 데이터 유형입니다. 그러나 BigInt는 JSON에서 기본적으로 지원되지 않으므로 큰 정수를 표현하고 구문 분석하려면 대체 방법을 사용해야 합니다.

한 가지 접근 방식은 JSON을 구문 분석할 때 부활 기능을 사용하는 것입니다. Reviver 함수는 큰 정수의 문자열 표현을 BigInt 객체로 변환하여 JavaScript 애플리케이션 내에서 올바르게 처리할 수 있도록 합니다.

위 내용은 JavaScript에서 JSON.parse()를 사용할 때 큰 숫자가 잘리는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.