Go JSON 技巧浮点数的精度损失。将 64 位浮点数转换为 32 位浮点数时会发生精度损失。package main import ( "fmt" ) func main() { var f1 float32 var f2 float64 f2 = 1.234567890123 f1 = float32(f2) fmt.Println(f1) // 打印 "1.2345679" } 复数时间与 MarshalJSON; 使用 RegisterTypeEncoder 自定义时间。虽然 JSON 标准要求 map 的 key 为 string,但 golang 支持更多类型,只要定义了 MarshalText()。Float]string{f: "2"} str, err := MarshalToString(val) 应该。如果输入很大,精度损失可能是个问题.big - Go 编程语言我遇到了以下问题:我的 golang 程序将一些信息转换为 JSON。type KeepZero float64 func (f KeepZero) MarshalJSON() ([]byte, error) { if 默认情况下,浮点数不带小数点,并将“%.1f”中的 1 替换为您需要的精度。由于浮点表示的怪癖,这些四舍五入的值可能会略有偏差。浮点数为整数值。将浮点数舍入为整数值有更多关于如何将 float64 舍入为整数(从零到偶数,转换为 int 类型)的详细信息。在 Go 1.10 之前。在 Go 1.10 中引入了 math.Round 函数。