gpt4 book ai didi

substrate - 你如何使用 Polkadot JS API 格式化余额?

转载 作者:行者123 更新时间:2023-12-05 00:55:30 29 4
gpt4 key购买 nike

我想使用 Substrate 链的基本单元格式化用户的余额。

当我使用 toHuman() 时,我会得到一个自以为是的格式,其中包含如下前缀:

let account = await api.query.system.account("EGVQCe73TpFyAZx5uKfE1222XfkT3BSKozjgcqzLBnc5eYo");
account.data.free.toHuman()

2.8320 kKSM

toNumber() 返回的值根本没有任何单位:

account.data.free.toNumber()

2832057009447293

如何使用 Polkadot JS API 仅使用基本单位获取此值?

最佳答案

您需要在链中查询 chainDecimals,它会告诉您应该在原始值中放置小数点的位置:

api.registry.chainDecimals

12

您可以通过除以 10chainDecimals 直接解析数字,也可以使用 Polkadot JS 实用函数 formatBalance 帮助您更轻松地格式化:

formatBalance(
accountData.data.free,
{ withSi: false, forceUnit: '-' },
chainDecimals
);

2,832.057

我最终做了一个这样的实用函数:

function toUnit(balance, decimals) {
base = new BN(10).pow(new BN(decimals));
dm = new BN(balance).divmod(base);
return parseFloat(dm.div.toString() + "." + dm.mod.toString())
}

关于substrate - 你如何使用 Polkadot JS API 格式化余额?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64210673/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com