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
    }
  • 相关阅读:
    小兔生仔和汽水换瓶的两个算法
    dpi 编程
    作者赠送的《我的第一本c++书》收到啦
    什么是程序员的优良品质
    如何把事情做对?
    学习应有的态度
    魔方数算法
    我的第二本c++教科书
    如何处理人际关系
    电动玩具的开发思路
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/12831084.html
Copyright © 2011-2022 走看看