gpt4 book ai didi

go - Golang以指定的精度将float编码为JSON

转载 作者:行者123 更新时间:2023-12-01 22:31:04 25 4
gpt4 key购买 nike

我们可以用指定的精度打印一个浮点数,如下所示:
fmt.Printf("%.2f", num)
将float编码为JSON时,我们可以做同样的事情吗?

因此对于num = 0.1234,

我们可以得到{“num”:0.12}而不是{“num”:0.1234}。

最佳答案

将自定义类型与自定义编码(marshal)功能一起使用。您可能还想实现自定义的解编码功能。

type LPFloat struct {
Value float32 // the actual value
Digits int // the number of digits used in json
}

func (l LPFloat) MarshalJSON() ([]byte, error) {
s := fmt.Sprintf("%.*f", l.Digits, l.Value)
return []byte(s), nil
}

Here is a working example on the Go playground

另请参见 encoding/json documentation中的示例。

编辑: strconv.FormatFloatyAzou's answer一样,通常会比 fmt.Sprintf更有效。除非这是概要分析中出现的瓶颈,否则应使用发现的任何瓶颈。

关于go - Golang以指定的精度将float编码为JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61811463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com