package main
import (
"fmt"
"github.com/shopspring/decimal"
)
func main() {
price, _ := decimal.NewFromString("136.02")//获取数字
quantity := decimal.NewFromFloat(3)//
fmt.Println(quantity)
fee, _ := decimal.NewFromString(".035")
taxRate, _ := decimal.NewFromString(".08875")
subtotal := mul(price, quantity)
preTax := mul(subtotal, add1(fee, decimal.NewFromFloat(1)))
total := mul(preTax, add1(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 add1(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
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!