JSON 마샬링에서 부동 소수점 정밀도 유지
Go에서 json.Marshal() 함수는 종종 부동 소수점 숫자에서 후행 0을 제거합니다. JSON 직렬화 중. 소비하는 애플리케이션이 원래 값의 전체 정밀도를 요구하는 경우 문제가 될 수 있습니다.
이 문제를 극복하려면 부동 소수점 값을 캡슐화하는 사용자 정의 데이터 유형을 정의하는 것이 좋습니다. 예는 다음과 같습니다.
type PreservedFloat float64 func (f PreservedFloat) MarshalJSON() ([]byte, error) { // Preserve trailing zeros in the JSON representation. if float64(f) == float64(int(f)) { return []byte(strconv.FormatFloat(float64(f), 'f', 1, 32)), nil } return []byte(strconv.FormatFloat(float64(f), 'f', -1, 32)), nil }
이 구현에서:
PreservedFloat를 사용하면 부동 소수점 값의 JSON 표현을 제어하여 마샬링 후에도 정밀도를 유지할 수 있습니다.
위 내용은 Go에서 JSON을 마샬링할 때 부동 소수점 정밀도를 어떻게 보존할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!