From cb4c11ed2900146ad310540bede6bc4cea782f7a Mon Sep 17 00:00:00 2001
From: dtapps
Date: Fri, 22 Dec 2023 12:30:02 +0800
Subject: [PATCH] update
---
README.md | 4 ++--
big_new.go | 9 +++++++++
const.go | 3 ---
go.mod | 2 +-
go.sum | 0
gorm.go | 35 +++++++++++++++++++++++++++++++++++
version.go | 3 +++
7 files changed, 50 insertions(+), 6 deletions(-)
delete mode 100644 const.go
delete mode 100644 go.sum
create mode 100644 gorm.go
create mode 100644 version.go
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"