簡體   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