preserva os zeros em JSON nos números dos pontos flutuantes
em Go, a função json.marshal () frequentemente tira zeros dos números flutuantes durante o marshalling. Isso pode levar à perda de precisão em certos cenários. Esse comportamento pode ser problemático se os programas externos esperam números de ponto flutuante com zeros à direita. Aqui está um exemplo:
tipo KeepZero float64 Func (f KeepZero) marshaljson () ([] byte, erro) { se float64 (f) == float64 (int (f)) { retornar [] byte (strConv.Formatfloat (float64 (f), 'f', 1, 32)), nil } retornar [] byte (strConv.Formatfloat (float64 (f), 'f', -1, 32)), nil } Nesse tipo personalizado, o método marshaljson () converte o flutuador em uma string com um lugar decimal (se for um número inteiro) ou preserva todos os lugares decimais (se não for um número inteiro. Valor KeepZero String de unidade } func main () { dados, err: = json.marshal (pt {value: 40.0, unidade: "algum_string"}) fmt.println (string (dados), err) }
este código sai {"value": 40.0, "unidade": "algum_string"} & lt; nil & gt ;, preserva o zero à direita na saída JSON.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3