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
    }
  • 相关阅读:
    html基本标签练习
    实践1-qq邮箱主页
    html加强
    Date日期操作
    日期类的加减及java中所以日期类的操作算法大全
    讲解java异常
    关于Java并发编程的总结和思考
    删除map、list集合元素总结
    Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】
    Java中的时间日期处理
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/12831084.html
Copyright © 2011-2022 走看看