您当前的位置: 首页 >  以太坊
  • 0浏览

    0关注

    212博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

以太坊系节点余额精度处理

杰哥的技术杂货铺 发布时间:2022-04-08 11:51:44 ,浏览量:0

当我们使用json_rpc接口 eth_getBalance 获取以太坊余额时,将得到一个string类型的十六进制数,如:0x1bc10edd0701d9f2

此时我们需要将该值转为big.int类型的整数,转换方法如下:

value := common.HexToBigInt("0x1bc10edd0701d9f2")
fmt.Println(value) //得到big.int类型整数值:1999896051997334002

注:如果我们需要将该整数值再次转为string,方便其它方法调用使用时,则如下转换即可:

balance := common.HexToBigInt(res)
fmt.Println(balance.String())

HexToBigInt 方法如下:

func hexToBigInt(hex string) *big.Int {
    n := new(big.Int)
    n, _ = n.SetString(hex[2:], 16)

    return n
}

得到一个整数值后,我们知道以太坊中的数字是使用尽可能小的单位来处理的,因为它们是定点精度,在ETH中它是wei。要读取ETH值,就必须做计算wei/10^18。因为我们正在处理大数,我们得导入原生的Gomath和math/big包。这是我们要做的转换。同时要使用ToDecimal 方法针对以太坊进行浮点数运算

将wei(整数)转换为小数。 第二个参数是小数位数。

wei := new(big.Int)
wei.SetString("
关注
打赏
1666063422
查看更多评论
立即登录/注册

微信扫码登录

0.0369s