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
    }
  • 相关阅读:
    深入浅出HTTP请求(转自http://www.cnblogs.com/yin-jingyu/archive/2011/08/01/2123548.html)
    IOS定位
    webView(简单的浏览器)
    Get&Post登录
    IOS多媒体
    IOS VFL屏幕自适应
    IOS中在自定义控件(非视图控制器)的视图跳转中 代理方法与代码块的比较
    单例设计的定义
    动画
    多线程
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/12831084.html
Copyright © 2011-2022 走看看