繁体   English   中英

如何在 web3.js 中使用 toWei() function 获取具有 2 位小数的令牌?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM