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
    }
  • 相关阅读:
    数量关系
    笨办法学python问题记录
    CSS布局与定位
    python学习 预备篇
    基于hexo搭建个人博客
    CSS常用样式
    计算机组成原理(期末篇)
    Codeblock错误提示栏隐藏
    Markdown标记语言
    笨办法学python(不同版本的python代码差别)
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/12831084.html
Copyright © 2011-2022 走看看