作者 yangfu

fix: decimal problem

... ... @@ -250,7 +250,7 @@ func RoundFieldValue(f *Field, v string) string {
if err != nil {
return v
}
return fmt.Sprintf("%v", fv)
return utils.AssertString(fv) //fmt.Sprintf("%v", fv)
}
return v
//if f.SQLType != DECIMALV2.ToString() {
... ... @@ -269,7 +269,7 @@ func RoundValue(v string) string {
if err != nil {
return v
}
return fmt.Sprintf("%v", fv)
return utils.AssertString(fv) //fmt.Sprintf("%v", fv)
}
func GripData(data []map[string]string, total int64) map[string]interface{} {
... ...
... ... @@ -15,19 +15,24 @@ func TestRoundFieldValue(t *testing.T) {
want string
}{
{
v: "0.12359999999999999",
v: "0.123599999999999",
f: floatFiled,
want: "0.1236",
want: "0.123599999999999",
},
{
v: "0.12360000000000001",
v: "0.123600000000001",
f: floatFiled,
want: "0.1236",
want: "0.123600000000001",
},
{
v: "0.12359999999999995",
v: "0.12359990000000",
f: floatFiled,
want: "0.1236",
want: "0.1235999",
},
{
v: "18749465132.256",
f: floatFiled,
want: "18749465132.256",
},
}
for _, input := range inputs {
... ... @@ -35,3 +40,39 @@ func TestRoundFieldValue(t *testing.T) {
assert.Equal(t, input.want, got)
}
}
func TestRoundValue(t *testing.T) {
floatFiled := &Field{
SQLType: Float.ToString(),
}
inputs := []struct {
v string
f *Field
want string
}{
{
v: "0.123599999999999",
f: floatFiled,
want: "0.123599999999999",
},
{
v: "0.123600000000001",
f: floatFiled,
want: "0.123600000000001",
},
{
v: "0.123599999999995",
f: floatFiled,
want: "0.123599999999995",
},
{
v: "18749465132.256",
f: floatFiled,
want: "18749465132.256",
},
}
for _, input := range inputs {
got := RoundValue(input.v)
assert.Equal(t, input.want, got)
}
}
... ...