zoukankan      html  css  js  c++  java
  • 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
    }
  • 相关阅读:
    Windows下python3安装pip管理包(转贴)
    AnyConnect removes "Connections" tab from IE Settings solution
    split陷阱
    java不足前面补0
    linux定时任务cron配置说明
    maven常用的plugin
    linux部署两个tomcat
    spring定时任务配置,以及不执行的解决办法
    windows10 自带笔记本键盘禁止和开启
    spring task的定时任务突然断了
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/12831084.html
Copyright © 2011-2022 走看看