diff --git a/main.go b/main.go index bbff0bb..f8ccef6 100755 --- a/main.go +++ b/main.go @@ -13,6 +13,7 @@ import ( mqtt "github.com/eclipse/paho.mqtt.golang" _ "github.com/go-sql-driver/mysql" "github.com/google/uuid" + "github.com/shopspring/decimal" "go_mqtt/models" _ "go_mqtt/models" "go_mqtt/mydb" @@ -20,7 +21,6 @@ import ( "io/ioutil" "log" "os" - "strconv" "strings" "time" ) @@ -570,13 +570,13 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL temperature.DataMinute = now.Format("2006-01-02 15:04") //temperature.Humidity = result[0] //temperature.Temperature = result[1] - // ParseFloat 返回 float64,需要显式转换为 float32 - f1, err1 := strconv.ParseFloat(result[0], 32) - f2, err2 := strconv.ParseFloat(result[1], 32) + //字符串转decimal.Decimal + humidityValue, err1 := decimal.NewFromString(result[0]) + temperatureValue, err2 := decimal.NewFromString(result[1]) if err1 == nil && err2 == nil { - // 转换为 float32 - temperature.Humidity = float32(f1) - temperature.Temperature = float32(f2) + // decimal.Decimal + temperature.Humidity = humidityValue + temperature.Temperature = temperatureValue } temperature.Topic = topic if topic == "WifiSHT/7C87CE9CA4E6/SHT20" { diff --git a/models/Temperature.go b/models/Temperature.go index dab9c88..3cdab73 100755 --- a/models/Temperature.go +++ b/models/Temperature.go @@ -2,6 +2,7 @@ package models import ( "fmt" + "github.com/shopspring/decimal" "go_mqtt/mydb" "time" ) @@ -9,13 +10,13 @@ import ( type Temperature struct { Id int64 `gorm:"primaryKey;autoIncrement"` CreateDate time.Time - DataDate string `gorm:"index:idx_dataDate;index:data_date_location_desc;size:20"` - DataHour string `gorm:"index:idx_dataHour;size:20"` - DataMinute string `gorm:"index:idx_dataMinute;size:20"` - Humidity float32 `gorm:"type:float8"` - LocationDesc string `gorm:"index:idx_locationDesc;index:data_date_location_desc;size:80"` - Temperature float32 `gorm:"type:float8"` - Topic string `gorm:"size:60"` + DataDate string `gorm:"index:idx_dataDate;index:data_date_location_desc;size:20"` + DataHour string `gorm:"index:idx_dataHour;size:20"` + DataMinute string `gorm:"index:idx_dataMinute;size:20"` + Humidity decimal.Decimal `gorm:"type:decimal(4,1)"` + LocationDesc string `gorm:"index:idx_locationDesc;index:data_date_location_desc;size:80"` + Temperature decimal.Decimal `gorm:"type:decimal(4,1)"` + Topic string `gorm:"size:60"` } func init() {