golang decimal處理插件包 大數字處理


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
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM