我想用BigNumber
的值来做math -100000 * 1.004
,这里最大的问题是1.004
是浮点数,BigNumber不接受,我用ethers.js库来做。
我试着使用parseUnits("1.004", 18)
。我使用18,因为基本上我是在稳定的硬币价格上操作的。
我得到了BigNumber { value: "1004000000000000000" }
,为了做数学运算,我还必须解析100000
,所以我用同样的方法-parseUnits("100000", 18)
,然后我只需要执行parseUnits("1.004", 18).mul(parseUnits("100000", 18))
,把它们相乘,就得到了BigNumber { value: "100400000000000000000000000000000000000000" }
。
当我使用formatUnits()
方法返回一个数字时,我得到了100400000000000000000000.0
,正确的值应该是100000 * 1.004 = 100400
。
使用ethers.js库进行此类计算的正确方法是什么?
2条答案
按热度按时间dluptydi1#
我最终决定使用
bignumber.js
库。ethers.js
不支持带小数的浮点值,而bignumber.js
在没有任何格式的情况下完美地做到了这一点。u4dcyp6a2#
将BigNumber转换为float,相乘,然后将结果转换为BigNumber: