JSON マーシャリングでの浮動小数点精度の維持
Go では、json.Marshal() 関数が浮動小数点数から末尾のゼロを削除することがよくあります。 JSON シリアル化中。使用するアプリケーションが元の値の完全な精度を必要とする場合、これは問題となる可能性があります。
この問題を解決するには、浮動小数点値をカプセル化するカスタム データ型を定義することを検討してください。以下に例を示します。
type PreservedFloat float64 func (f PreservedFloat) MarshalJSON() ([]byte, error) { // Preserve trailing zeros in the JSON representation. if float64(f) == float64(int(f)) { return []byte(strconv.FormatFloat(float64(f), 'f', 1, 32)), nil } return []byte(strconv.FormatFloat(float64(f), 'f', -1, 32)), nil }
この実装では:
PreservedFloat を使用すると、浮動小数点値の JSON 表現を制御し、マーシャリング後でも精度を確実に維持できます。
以上がGo で JSON をマーシャリングするときに浮動小数点の精度を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。