diff --git a/README.md b/README.md index 678dac8..1f024a4 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ #### 安装 -```go -go get -v -u go.dtapp.net/godecimal +```shell +go get -v -u go.dtapp.net/godecimal@v1.0.11 ``` #### 使用 diff --git a/big_new.go b/big_new.go index d9ed234..d3a8411 100644 --- a/big_new.go +++ b/big_new.go @@ -1,5 +1,14 @@ package godecimal +import "fmt" + +// NewInterface 创建 +func NewInterface(value interface{}) Decimal { + d := New() + d.floatValue.SetString(fmt.Sprint(value)) + return d +} + // NewString 从字符串创建 func NewString(s string) Decimal { d := New() diff --git a/const.go b/const.go deleted file mode 100644 index 848650a..0000000 --- a/const.go +++ /dev/null @@ -1,3 +0,0 @@ -package godecimal - -const Version = "1.0.10" diff --git a/go.mod b/go.mod index 38edac9..f9d4206 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ module go.dtapp.net/godecimal -go 1.19 +go 1.21 diff --git a/go.sum b/go.sum deleted file mode 100644 index e69de29..0000000 diff --git a/gorm.go b/gorm.go new file mode 100644 index 0000000..5ea89a8 --- /dev/null +++ b/gorm.go @@ -0,0 +1,35 @@ +package godecimal + +import ( + "database/sql/driver" + "fmt" + "strings" +) + +type DFloat struct { + FValue float64 + Point int +} + +// Value 实现 driver.Valuer 接口,Value 返回 json value +func (f DFloat) Value() (driver.Value, error) { + return NewFloat(f.FValue).Float64PointAdaptive(f.Point), nil +} + +// Scan 方法实现了 sql.Scanner 接口 +func (f *DFloat) Scan(value interface{}) error { + f1, _ := value.(float64) + *f = DFloat{ + FValue: f1, + Point: pointLength(f1), + } + return nil +} + +func pointLength(a any) int { + tmp := strings.Split(fmt.Sprint(a), ".") + if len(tmp) <= 1 { + return 0 + } + return len(tmp[1]) +} diff --git a/version.go b/version.go new file mode 100644 index 0000000..c33c9c3 --- /dev/null +++ b/version.go @@ -0,0 +1,3 @@ +package godecimal + +const Version = "1.0.11"