From 86cd2eab391a2ed5c601816397ed4798066287cd Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Mon, 23 Dec 2024 20:41:01 +0800 Subject: [PATCH] fix: ConvertToFloat64 support convert string to float64 --- hrp/internal/builtin/utils.go | 14 ++++++++++++-- hrp/internal/version/VERSION | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/hrp/internal/builtin/utils.go b/hrp/internal/builtin/utils.go index 179ba4f3..bca93f1e 100644 --- a/hrp/internal/builtin/utils.go +++ b/hrp/internal/builtin/utils.go @@ -380,8 +380,18 @@ func ConvertToFloat64(val interface{}) (float64, error) { return float64(v), nil case int64: return float64(v), nil + case string: + f, err := strconv.ParseFloat(v, 64) + if err != nil { + log.Error().Err(err).Str("value", v). + Msg("convert string to float64 failed") + return 0, err + } + return f, nil default: - return 0, fmt.Errorf("invalid type for conversion to float64: %T, value: %+v", val, val) + log.Error().Interface("value", val).Type("type", val). + Msg("convert float64 failed") + return 0, errors.New("convert float64 error") } } @@ -396,7 +406,7 @@ func ConvertToFloat64Slice(val interface{}) ([]float64, error) { for i, v := range paramsSlice { float64Slice[i], err = ConvertToFloat64(v) if err != nil { - return nil, errors.New("val is not float64 slice") + return nil, err } } return float64Slice, nil diff --git a/hrp/internal/version/VERSION b/hrp/internal/version/VERSION index 3b44b471..acaaea43 100644 --- a/hrp/internal/version/VERSION +++ b/hrp/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2412231751 +v5.0.0+2412232041