在 JSON 编组中保留浮点精度
在 Go 中, json.Marshal() 函数通常会从浮点数中删除尾随零在 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中文网其他相关文章!