大家好,我是你的好朋友思创斯。今天说一说golang运行时动态生成代码_go插件化开发,希望您对编程的造诣更进一步.

Install

go get github.com/shopspring/decimal
package main

import (
	"fmt"

	"github.com/shopspring/decimal"
)

func main() {
	price, _ := decimal.NewFromString("136.02")
	quantity := decimal.NewFromFloat(3)
	fee, _ := decimal.NewFromString(".035")
	taxRate, _ := decimal.NewFromString(".08875")

	subtotal := mul(price, quantity)
	preTax := mul(subtotal, add(fee, decimal.NewFromFloat(1)))
	total := mul(preTax, add(taxRate, decimal.NewFromFloat(1)))
	taxes := sub(total, preTax)
	taxRate = div(sub(total, preTax), preTax)

	fmt.Println("int,Subtotal:",int(subtotal))
	fmt.Println("float64,Subtotal:",float(subtotal))

	fmt.Println("Subtotal:", subtotal) // Subtotal: 408.06
	fmt.Println("Pre-tax:", preTax)    // Pre-tax: 422.3421
	fmt.Println("Taxes:", taxes)       // Taxes: 37.482861375
	fmt.Println("Total:", total)       // Total: 459.824961375
	fmt.Println("Tax rate:", taxRate)  // Tax rate: 0.08875
}

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

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

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

// 除法
func div(d1 decimal.Decimal, d2 decimal.Decimal) decimal.Decimal {
	return d1.Div(d2)
}

// int
func int(d decimal.Decimal) int64{
	return d.IntPart()
}

// float
func float(d decimal.Decimal) float64{
	f, exact := d.Float64()
	if !exact{
		return f
	}
	return 0
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。