1 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
有什么辦法可以保持精度?
不要將字符串解析為浮點(diǎn)數(shù),而是保留原始值,即保留string
.
這是一個(gè)例子:
注意#1:需要擴(kuò)展代碼才能處理其他類型。
注意#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
}
在操場(chǎng)上試試。
# output:
map[common:map[vartest1:1.2000 vartest2:1.22233]]
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)