[英]how to use toWei() function in web3.js for tokens having 2 decimals?
我正在尝试使用名为 toWei() 的 web3js function 转换 wei 中的金额。
这是我的代码:
var etherwithdrawamount1=web3Infura.utils.toWei(etherwithdrawamount, 'wei');
现在,问题是代币数量计算不正确,因为代币有 2 位小数。
在 web3 文档中: https://web3js.readthedocs.io/en/1.0/web3-utils.html#towei没有两位小数的位置。
number - 字符串|数字|BN:值。
unit - 字符串(可选,默认为“ether”):要转换的以太币。
可能的单位是:
诺特:'0'
魏:'1'
奎:'1000'
葵:'1000'
巴贝奇:'1000'
飞以太:'1000'
mwei:'1000000'
Mwei:'1000000'
爱情花边:'1000000'
皮醚:'1000000'
gwei:'1000000000'
桂:'1000000000'
香农:'1000000000'
纳米醚:'1000000000'
纳米:'1000000000'
萨博:'1000000000000'
微醚:'1000000000000'
微:'1000000000000'
芬尼:'1000000000000000'
毫醚:'1000000000000000'
毫:'1000000000000000'
以太:'1000000000000000000'
那么,如何在令牌小数为 2 的 toWei() 中获得正确的值?
尝试这个:
function strtodec(amount,dec){
stringf = "";
for(var i=0;i<dec;i++){
stringf = stringf+"0";
}
return amount+stringf;
}
您需要使用此方法调用此函数:
strtodec(amount,'your token decimal here')
逻辑是这样的:该函数在您想要的小数位数中添加零。
您正在使用的函数toWei()
用于转换 wei 中的以太币数量,而不是 wei 中的代币数量。 要在 wei 中转换代币数量,您必须使用代币的价格。 更具体地说,您必须将代币数量乘以以 wei 为单位的代币价格,或任何其他单位,这将告诉您在上面使用的单位中,代币的成本是多少。 因此,如果您有 10 个代币,每个代币的价格为2 wei
那么您就有20 wei
的代币。
这是我发现的,
let decimal = "1".padEnd(decimals+1,0);
let { unitMap } = web3.utils;
let unit = Object.keys(unitMap).find((k) => unitMap[k] === decimal);
let amount = web3.utils.toWei(etherwithdrawamount, unit);
太晚了。 但它可能对某人有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.