Python에서 Decimal 개체를 JSON으로 직렬화
Decimal 개체를 JSON 문자열로 인코딩하여 정밀도를 유지하려고 할 때 일반적인 문제가 발생합니다. . 부동 소수점으로 변환하는 기본 접근 방식은 정밀도가 손실됩니다.
해결책 1: SimpleJSON(Python 2.1 이상)
SimpleJSON은 다음을 통해 Decimal 개체에 대한 직관적인 지원을 제공합니다. 'use_decimal' 플래그:
import simplejson as json json.dumps(Decimal('3.9'), use_decimal=True) # Output: '3.9'
기본적으로 'use_decimal'이 True로 설정되어 명시적 지정이 필요하지 않습니다.
json.dumps(Decimal('3.9')) # Output: '3.9'
해결책 2: 사용자 정의 JSON 인코더
SimpleJSON이 옵션이 아닌 경우 Decimal 개체를 처리하는 사용자 정의 JSON 인코더를 만들 수 있습니다.
import decimal import json class DecimalEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, decimal.Decimal): return float(obj) # Handle other object types as needed return super().default(obj) json.dumps(Decimal('3.9'), cls=DecimalEncoder) # Output: '3.8999999999999999'
이 접근 방식은 Decimal 객체를 부동소수점으로 변환하면 정밀도 손실이 발생할 수 있습니다.
위 내용은 정밀도를 유지하면서 Python에서 소수 개체를 JSON으로 직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!