1 回答

TA贡献1830条经验 获得超3个赞
有什么办法可以保持精度?
不要将字符串解析为浮点数,而是保留原始值,即保留string
.
这是一个例子:
注意#1:需要扩展代码才能处理其他类型。
注意#2:这是使用
yaml.v3
type Any struct {
Val any
}
func (a Any) String() string {
return fmt.Sprint(a.Val)
}
func (a *Any) UnmarshalYAML(n *yaml.Node) error {
switch n.Kind {
case yaml.MappingNode:
m := map[string]Any{}
if err := n.Decode(&m); err != nil {
return err
}
a.Val = m
case yaml.ScalarNode:
switch n.Tag {
case "!!float":
// Don't parse the raw string value,
// use it as is if you want to retain
// its formatting.
a.Val = n.Value
}
}
return nil
}
在操场上试试。
# output:
map[common:map[vartest1:1.2000 vartest2:1.22233]]
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报