testcase: {"":[9020000000039351e-5]} testcode: ``` func test(data []byte) { create := func() interface{} { m := map[string]interface{}{}; return &m } v := create() v1 := create() _ = json.Unmarshal(data, v) data1, _ := json.Marshal(v) _ = json.Unmarshal(data1, v1) fmt.Printf("v0: %#v, v1: %#v\n", v, v1) } ``` when call test with "encoding/json" , get result: ``` v0: &map[string]interface {}{"":[]interface {}{9.020000000039351e+10}}, v1: &map[string]interface {}{"":[]interface {}{9.020000000039351e+10}} ``` when call test with json-iterator ,get result : ``` v0: &map[string]interface {}{"":[]interface {}{9.020000000039351e+10}}, v1: &map[string]interface {}{"":[]interface {}{9.020000000039352e+10}} ``` 9.020000000039351e+10 vs 9.02000000003935**2**e+10 How did I find the problem? I refer to the test cases and test corpus for std json in the go-fuzz project to test json-iterator. see : https://github.com/dvyukov/go-fuzz-corpus/tree/master/json