🐛 fix: fix floating point precision

This commit is contained in:
Martial BE 2024-04-22 18:32:20 +08:00
parent 2d0a635f5e
commit d1369eb5c6
No known key found for this signature in database
GPG Key ID: D06C32DF0EDB9084
3 changed files with 12 additions and 2 deletions

1
go.mod
View File

@ -40,6 +40,7 @@ require (
github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/shopspring/decimal v1.4.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect

2
go.sum
View File

@ -232,6 +232,8 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=

View File

@ -3,6 +3,7 @@ package model
import (
"one-api/common"
"github.com/shopspring/decimal"
"gorm.io/gorm"
)
@ -62,11 +63,17 @@ func (price *Price) GetOutput() float64 {
}
func (price *Price) FetchInputCurrencyPrice(rate float64) float64 {
return price.GetInput() * rate
r := decimal.NewFromFloat(price.GetInput()).Mul(decimal.NewFromFloat(rate))
v, _ := r.Float64()
return v
}
func (price *Price) FetchOutputCurrencyPrice(rate float64) float64 {
return price.GetOutput() * rate
r := decimal.NewFromFloat(price.GetOutput()).Mul(decimal.NewFromFloat(rate))
v, _ := r.Float64()
return v
}
func UpdatePrices(tx *gorm.DB, models []string, prices *Price) error {