# How to use golang decimal

1. Load the decimal package go get github.com/shopspring/decimal
2. Structure Definition

Note: It is recommended to use json.Unmarshal(xx, &buyGoods{}) when the front-end parameter is converted into a structure containing decimal

import (
“github.com/shopspring/decimal”
)
Num int `json:"num"` // number’,
Price decimal.Decimal `json:"price"` // unit price’
}

1. Logic use
``````// First convert int to string and then convert to decimal type for operation
sellNum, _ := decimal.NewFromString(strconv.Itoa(e.Num))
totalMoney := MulDecimal(e.Price, sellNum)
``````
``````Fourth, the operation method corresponding to decimal
import "github.com/shopspring/decimal"
// Mainly used to handle floating point data precision
func AddDecimal(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
}
// subtract
func SubDecimal(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
return d1.Sub(d2)
}
// multiply
func MulDecimal(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
return d1.Mul(d2)
}
// division
func DivDecimal(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
return d1.Div(d2)
}
// int
func IntDecimal(d decimal.Decimal) int64 {
return d.IntPart()
}
// float
func FloatDecimal(d decimal.Decimal) float64 {
f, exact := d.Float64()
if !exact {
return f
}
return 0
}``````