如何在Hardhat中对ethers.parseEther()的结果执行乘法运算?
解决ethers.js中parseEther返回值的乘法问题
问题原因
ethers v6版本起,ethers.parseEther()返回的是原生JavaScript BigInt类型,而非旧版本的BigNumber对象:
- 直接用
* 2报错是因为JS不允许BigInt和普通Number混合运算,必须显式转换类型 - 调用
.mul()方法报错是因为原生BigInt没有这个方法,该方法属于ethers旧版的BigNumber对象
正确写法
有两种可行的乘法实现方式:
- 方式一:将数字转换为BigInt类型后运算
const PRICE_ONE = ethers.parseEther("0.05"); const test = PRICE_ONE * BigInt(2);
- 方式二:直接使用BigInt字面量(数字后加
n)
const PRICE_ONE = ethers.parseEther("0.05"); const test = PRICE_ONE * 2n;
额外说明
如果需要将运算结果转换回人类可读的以太币格式,可以使用:
const readablePrice = ethers.formatEther(test);
内容的提问来源于stack exchange,提问作者WHOATEMYNOODLES
相关产品推荐
相关产品推荐

