go decimal 使用方法

go decimal 使用方法,第1张

一、载入decimal

     go get  github.com/shopspring/decimal

二、结构定义

注意:前端传参转成包含decimal的结构时,建议使用 json.Unmarshal(xx, &buyGoods{})  

import (
    "github.com/shopspring/decimal"
)
// 购买商品
type buyGoods struct {
    Num          int             `json:"num"`          // 数量',
    Price        decimal.Decimal `json:"price"`        // 单价'
}

三、逻辑使用

// 先将int 转成string 再转成 decimal类型去运算
sellNum, _ := decimal.NewFromString(strconv.Itoa(e.Num)) 
totalMoney := MulDecimal(e.Price, sellNum)

四、对应decimal的运算方法

import "github.com/shopspring/decimal"

// 主要用于处理浮点数据精度

// 加法
func AddDecimal(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
    return d1.Add(d2)
}

// 减法
func SubDecimal(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
    return d1.Sub(d2)
}

// 乘法
func MulDecimal(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
    return d1.Mul(d2)
}

// 除法
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
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存