diff --git a/graphql/float.go b/graphql/float.go index d204335c44..fabbad0468 100644 --- a/graphql/float.go +++ b/graphql/float.go @@ -9,7 +9,7 @@ import ( func MarshalFloat(f float64) Marshaler { return WriterFunc(func(w io.Writer) { - io.WriteString(w, fmt.Sprintf("%f", f)) + io.WriteString(w, fmt.Sprintf("%g", f)) }) } diff --git a/graphql/float_test.go b/graphql/float_test.go new file mode 100644 index 0000000000..75905639f9 --- /dev/null +++ b/graphql/float_test.go @@ -0,0 +1,22 @@ +package graphql + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestFloat(t *testing.T) { + assert.Equal(t, "123", m2s(MarshalFloat(123))) + assert.Equal(t, "1.2345678901", m2s(MarshalFloat(1.2345678901))) + assert.Equal(t, "1.2345678901234567", m2s(MarshalFloat(1.234567890123456789))) + assert.Equal(t, "1.2e+20", m2s(MarshalFloat(1.2e+20))) + assert.Equal(t, "1.2e-20", m2s(MarshalFloat(1.2e-20))) +} + +func m2s(m Marshaler) string { + var b bytes.Buffer + m.MarshalGQL(&b) + return b.String() +} diff --git a/graphql/jsonw_test.go b/graphql/jsonw_test.go index d11973927e..00f01cf57b 100644 --- a/graphql/jsonw_test.go +++ b/graphql/jsonw_test.go @@ -34,5 +34,5 @@ func TestJsonWriter(t *testing.T) { b := &bytes.Buffer{} obj.MarshalGQL(b) - require.Equal(t, `{"test":10,"array":[1,"2",true,false,null,1.300000,true],"emptyArray":[],"child":{"child":{"child":null}}}`, b.String()) + require.Equal(t, `{"test":10,"array":[1,"2",true,false,null,1.3,true],"emptyArray":[],"child":{"child":{"child":null}}}`, b.String()) }