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 중국어 웹사이트의 기타 관련 기사를 참조하세요!