Golang 使用 TiDB 的 mydecimal 实现小数位数截断

yufei       2 年 前       722

最近的 BTC 计算需要精确到小数位数后8位,翻了自己以前实现的小数位数截断,均不理想,后来看了 TiDB 的,感觉很适用,就用它了,下面是一些精确计算的结果

package main

import (
    "fmt"

    "github.com/pingcap/tidb/util/types"
)

func main() {
    dec1 := new(types.MyDecimal)
    dec1.FromFloat64(3134333.22939932)
    dec2 := new(types.MyDecimal)
    dec2.FromFloat64(3134.229322)
    dec3 := new(types.MyDecimal)
    dec4 := new(types.MyDecimal)
    types.DecimalMul(dec1, dec2, dec3)
    fmt.Println(string(dec3.ToString()))
    ff, err := dec3.ToFloat64()
    if err != nil {
        panic(err)
    }
    fmt.Printf("%.8f\n", ff)
    for i := -8; i < 16; i++ {
        dec3.Round(dec4, i, types.ModeTruncate)
        fmt.Println(string(dec4.ToString()))
    }
}
目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.