是否有读取 ERC20 供应并在输出中给出不带小数的数字的功能?

Is there a function to read ERC20 supply and give in output the number without decimals?

在我之前的 中,我发现了如何允许用户输入多个 ERC20 令牌,以及 return 具有小数位数的值。

假设 ERC20 的小数位数是 4,用户输入 1.5,我们将使用 .toFixed(4) 显示 1.5000。

现在我正在尝试相反的方法(更多信息在代码之后)但是似乎没有任何功能,例如 "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))。更一般地说,要使用不同的小数位数 d 显示数字 n,您可以这样做:x=n/(10^d);console.log(x.toFixed(d))