javascript - 是否有一个函数可以读取 ERC20 供应并在输出中给出不带小数的数字?

标签 javascript decimal solidity smartcontracts web3js

在我之前的post中我找到了如何允许用户输入一定数量的 ERC20 代币,并返回带有小数位数的值。

假设 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))

关于javascript - 是否有一个函数可以读取 ERC20 供应并在输出中给出不带小数的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54494432/

相关文章:

javascript - web3.eth.accounts[0] 返回未定义

javascript - C3图表在 Angular Directive(指令)中调整大小

c# - *(decimal*)d=XXXm 产生不同于 BinaryWriter.Write(XXXm) 的另一个输出

java - 添加双数据获取并构造双数据错误

c# - 使用 IronPython 时如何处理 C# 小数?

solidity - 合约余额被耗尽。有趣的是它是如何完成的

javascript - 带有 SystemJS 的 Cypress

javascript - 如何为 ES6 类属性提供默认值?

javascript - 播放 m3u8 文件时 cordova-plugin-media 出错

javascript - TypeError : prevState. blockHash 不可迭代