Solidity

ganache 測試返回字元而不是數字

  • August 13, 2019
mapping(uint256 => uint256) public amount;

function saveAmount(uint256 _id, uint256 _amount) public {
   amount[_id] = _amount;
}

我有一個可以節省映射數量的功能。當我使用 ganache 進行測試時,我得到了一個奇怪的字元值。例如,

instance.saveAmount(1, 100000, {from: account[1]})

然後,查看金額,

instance.amount(1)產生

國陣:186a0

為什麼不顯示100000?

該呼叫將十六進制值作為一個大數字返回。

0x186a0十六進制是100000十進制。

這是一個很大的數字,因為以這種格式處理 ETH 值更容易。

要從呼叫中獲取數字表示,您應該執行以下操作:

var amount = instance.amount(1)
console.log(Number(amount))

引用自:https://ethereum.stackexchange.com/questions/73896