修复潜在的丢失精度问题

This commit is contained in:
白茶清欢 2024-11-30 22:04:29 +08:00
parent 8cca556d6f
commit c10486b403

View File

@ -13,6 +13,8 @@ import (
"reflect"
"strings"
"git.zhangdeman.cn/zhangdeman/util"
"git.zhangdeman.cn/zhangdeman/consts"
"git.zhangdeman.cn/zhangdeman/json_filter/gjson_hack"
"git.zhangdeman.cn/zhangdeman/serialize"
@ -242,7 +244,15 @@ func (f *filter) getValue(dataType consts.DataType, sourceValue gjson.Result, de
return strVal.Value(), nil
case consts.DataTypeAny:
if sourceValue.Exists() {
// TODO : 可能存在精度丢失
// 可能存在精度丢失, 原因 : gjson.Value 内置的转换, int64 超过一定大小会存在丢失精度问题
if sourceValue.Num > 0 {
// 说明是数字
var res float64
if err := util.ConvertAssign(&res, sourceValue.String()); nil != err {
return nil, err
}
return res, nil
}
return sourceValue.Value(), nil
}
return defaultValue, nil