golang int和float计算 加减乘除

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版权协议,转载请附上原文出处链接和本声明。