币圈数值转换

币圈数值转换本文介绍了数字货币交易中常见的单位 B M 和 T 的含义 分别代表十亿 百万和万亿

大家好,欢迎来到IT知识分享网。

我们经常可以在币安中看到,某交易对的成交量或者成交额都有一个M或者B的单位,那么本文带大家一起实现

一、疑问:

1. 数量单位B和M以及T代表多少?

  • B是单词billion的缩写,1B=10亿
  • M是单词million的缩写,1M=100万
  • T是单词trillion的缩写,1T=1万亿

币圈m代表单位百万,1M在国际通行的说法是1M=1百万,欧洲银行业管理局将虚拟货币定义为:价值的数字化表示,不由央行或当局发行,也不与货币挂钩,但由于被公众所接受,所以可作为支付手段,也可以电子形式转移、存储或交易。

二、代码实现

首先需要有一些string数据类型的加减乘除运算方法

func Calc(a string, b string, op int, pcs int) (string, error) { decimal.DivisionPrecision = pcs ad, err1 := decimal.NewFromString(a) bd, err2 := decimal.NewFromString(b) if err1 != nil || err2 != nil { return "0.00", errors.New(fmt.Sprintf("Calc fail,err1=%v,err2=%v", err1, err2)) } if op == 1 { ad = ad.Add(bd) } else if op == -1 { ad = ad.Sub(bd) } else if op == 2 { ad = ad.Div(bd) } else if op == 3 { ad = ad.Mul(bd) } return fmt.Sprintf("%v", ad), nil } / a+b */ func Add(a string, b string) (r string, err error) { return Calc(a, b, 1, 20) } / a-b */ func Sub(a string, b string) (r string, err error) { return Calc(a, b, -1, 20) } / a/b */ func Div(a string, b string) (r string, err error) { return Calc(a, b, 2, 20) } / a*b */ func Mul(a string, b string) (r string, err error) { return Calc(a, b, 3, 20) } / s1 == s2 */ func Equal(s1 string, s2 string) bool { a, err1 := decimal.NewFromString(s1) b, err2 := decimal.NewFromString(s2) if err1 != nil || err2 != nil { return false } return a.Equal(b) } / s1 < s2 */ func LessThan(s1 string, s2 string) bool { a, err1 := decimal.NewFromString(s1) b, err2 := decimal.NewFromString(s2) if err1 != nil || err2 != nil { return false } return a.LessThan(b) } / s1 <= s2 */ func LessThanOrEqual(s1 string, s2 string) bool { a, err1 := decimal.NewFromString(s1) b, err2 := decimal.NewFromString(s2) if err1 != nil || err2 != nil { return false } return a.LessThanOrEqual(b) } / s1 > s2 */ func GreaterThan(s1 string, s2 string) bool { a, err1 := decimal.NewFromString(s1) b, err2 := decimal.NewFromString(s2) if err1 != nil || err2 != nil { return false } return a.GreaterThan(b) } / s1 >= s2 */ func GreaterThanOrEqual(s1 string, s2 string) bool { a, err1 := decimal.NewFromString(s1) b, err2 := decimal.NewFromString(s2) if err1 != nil || err2 != nil { return false } return a.GreaterThanOrEqual(b) } 

其次需要有一个截取小数精度的方法

//小数精度截取 func PrecisionValue(value string, precision int) string { //判断字符中是否包含. if ok := strings.Contains(value, "."); ok { //以.截取字符串 ss := strings.Split(value, ".") var a string //判断小数位是否大于精度,否则返回原值 if len(ss[1]) > precision { a = ss[1][:precision] return (ss[0] + "." + a) } } return value } 

下面便是添加B或者M的单位

//数值单位换算 func UnitValue(strnum string, precision int) string { sdivision := strings.Split(strnum, ".") sl := sdivision[0] if len(sl) >= 10 { value, _ := libra.Div(sl, "") return PrecisionValue(value, precision) + "B" } if len(sl) >= 7 { value, _ := libra.Div(sl, "") return PrecisionValue(value, precision) + "M" } return PrecisionValue(strnum, precision) } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139575.html

(0)
上一篇 2025-06-03 18:00
下一篇 2025-06-03 18:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信