Hei*_*erg 2 javascript blockchain ethers.js
为什么以下代码会因超过小数而返回小数部分错误?它似乎只在低平衡时触发。
如果我的余额是 0.1 以太币或 BNB,我不会看到错误,但如果我的余额是 0.0001,我会看到此错误
错误:小数部分超过小数
var account = accounts[0]
var yourBalance = await provider.getBalance(account)
var fixedBalance= ethers.FixedNumber.fromValue(yourbalance , 18);
var stakedAmount = (fixedBalance * 0.50).toString();
var finalOutput = ethers.utils.parseUnits(stakedAmount , 18); //this returns Error: fractional component exceeds decimals
Run Code Online (Sandbox Code Playgroud)
使用toFixed(n)
var stakedAmount = (fixedBalance * 0.50).toFixed(6) ;
n定义为小数点所需的最大精度。
我随意选择了 6 个,但此评论表明您可能会选择 18 个?
toFixed(n)还将您的号码转换为字符串,以便您可以删除toString().
我认为这是因为您的浮点数有太多小数位无法表示BigNumber,因此您需要截断小数位的精度。
对于后代和通过搜索引擎来到这里的人们,我收到的完整回溯是:
Error: fractional component exceeds decimals
(fault="underflow", operation="parseFixed", code=NUMERIC_FAULT, version=bignumber/5.5.0)
Run Code Online (Sandbox Code Playgroud)
这很有趣,因为我刚才确实遇到了类似的错误。比你晚几个小时。
| 归档时间: |
|
| 查看次数: |
5038 次 |
| 最近记录: |