javascript - 是否有读取 ERC20 供应并输出不带小数的数字的功能?
问题描述
在我之前的帖子中,我发现了如何允许用户输入多个 ERC20 代币,并返回带有小数位数的值。
假设 ERC20 的小数位数为 4,用户输入 1.5,我们将使用 显示他们 1.5000 .toFixed(4)
。
现在我正在尝试相反的方法(代码后的更多信息)但是似乎没有任何功能,例如“fromFixed”。例如,我使用 web3js 读取了总供应量
checkBalance = async event => {
try {
const balance = await smartContract.methods.balanceOf(event).call();
console.log(balance)
} catch (err) {
let error= 'Address Error';
console.log(error)
}
};
假设您有 10k ERC20,上面的代码将显示在输出 100000000(即 10,000.0000)中。我想用一个点来显示结果,最后 4 位小数加上一个点,所以只有 10000.0000(10,000.0000)。
我试过了balance.toFixed(4)
但是输出更糟,因为我得到 1000000000000 (10,000,0000.0000)`
我尝试console.log(web3.fromWei(balanceOf, 'ether'));
期望它将转换为以太坊的 18 位小数,输出将类似于 10 000.000000000000000000
这在“checkBalance”函数中永远不会起作用,因为它总是会捕获错误。
解决方案
在我看来,这更多地与如何显示数字有关,而不是与一般的以太坊有关。在任何情况下,如果您想将 10000 显示为 10.000,那么使用四位小数,您可以执行x=10000/1000;console.log(x.toFixed(4))
. 更一般地说,要n
使用不同的小数位数显示数字,d
您可以执行以下操作:x=n/(10^d);console.log(x.toFixed(d))