go加减乘除
加载 go get github.com/shopspring/decimal
(decimal手册地址 https://godoc.org/github.com/shopspring/decimal#Decimal.Sub )
初始化一个变量
d0 := decimal.NewFromFloat(0)
设置精度 为三位 四舍五入的精度
decimal.DivisionPrecision = 3
加法 Add
2.1 + 3 float和int相加
var num1 float64 = 2.1
var num2 int = 3
d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "5.1"
2.1 + 3.1 (float和float相加)
var num1 float64 = 2.1
var num2 float64 = 3.1
d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(num2))
fmt.Println(d1) // output: "5.2"
2 + 3 (int和int相加 可以直接相加)
var num1 float64 = 2
var num2 float64 = 3
(d1 = num1+num2)
d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(num2))
fmt.Println(d1) // output: "5"
减法 Sub
3.1 - 2 float和int相减
var num1 float64 = 3.1
var num2 int = 2
d1 := decimal.NewFromFloat(num1).Sub(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "1.1"
2.1 - 3.1 (float和float相减)
var num1 float64 = 2.1
var num2 float64 = 3.1
d1 := decimal.NewFromFloat(num1).Sub(decimal.NewFromFloat(num2))
fmt.Println(d1) // output: "-1"
2 - 3 (int和int相减)
var num1 int = 2
var num2 int = 3
(d1 = num1 - num2)
d1 := decimal.NewFromFloat(float64(num1)).Sub(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "-1"
乘法 Mul
3.1 * 2 float和int相乘
var num1 float64 = 3.1
var num2 int = 2
d1 := decimal.NewFromFloat(num1).Mul(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "6.2"
2.1 * 3.1 (float和float相乘)
var num1 float64 = 2.1
var num2 float64 = 3.1
d1 := decimal.NewFromFloat(num1).Mul(decimal.NewFromFloat(num2))
fmt.Println(d1) // output: "6.51"
2 * 3 (int和int相乘)
var num1 int = 2
var num2 int = 3
(d1 = num1 * num2)
d1 := decimal.NewFromFloat(float64(num1)).Mul(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "6"
除法 Div
int 和 int 相除
2 ➗ 3 = 0.6666666666666667
var num1 int = 2
var num2 int = 3
d1 := decimal.NewFromFloat(float64(num1)).Div(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "0.6666666666666667"
float64 和 int 相除
var num1 float64 = 2.1
var num2 int = 3
d1 := decimal.NewFromFloat(num1).Div(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "0.7"
float64 和 float64 相除
2.1 ➗ 0.3 = 7
var num1 float64 = 2.1
var num2 float64 = 0.3
d2 := decimal.NewFromFloat(num1).Div(decimal.NewFromFloat(num2))
fmt.Println(d2) // output: "7"
int 和 int 相除 并保持3位精度
2 ➗ 3 = 0.667
var num1 int = 2
var num2 int = 3
decimal.DivisionPrecision = 3
d1 := decimal.NewFromFloat(float64(num1)).Div(decimal.NewFromFloat(float64(num2)))
fmt.Println(d1) // output: "0.667"
项目例子
var betgolds, etstones, stoneuse2, users, rounds, tickets, betgold, betstone, redpacks int
d1 := decimal.NewFromFloat(0) //累加变量初始化值
for _, v := range info {
betgold = v["robot_golds"].Intval + v["systax"].Intval
betgolds = betgolds + betgold
betstone = v["stonetax"].Intval + v["stoneuse"].Intval
etstones = etstones + betstone
stoneuse2 = stoneuse2 + v["stoneuse2"].Intval
users = users + v["totalmembers"].Intval
redpacks = redpacks + v["gift_redpack"].Intval
rounds = rounds + v["rounds"].Intval
tickets = tickets + v["gift_ticket"].Intval
decimal.DivisionPrecision = 2
d3 := decimal.NewFromFloat(float64(betgold)).Div(decimal.NewFromFloat(10000))
d4 := decimal.NewFromFloat(float64(betstone)).Mul(decimal.NewFromFloat(0.22))
d5 := decimal.NewFromFloat(float64(v["gift_ticket"].Intval)).Mul(decimal.NewFromFloat(0.001))
d1 = d1.Add(d3).Add(d4).Sub(decimal.NewFromFloat(float64(v["gift_redpack"].Intval))).Sub(d5)
}
//for外输入d1
logger.info(d1)
版权声明:本文为qq_33705680原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。