1

我试图通过 Metamask 中的 web3 从solidity 合约中获取数据。我不明白。为什么我得到数组而不是数字或字符串?也许你知道从以太坊合约中获取正常数据的其他方法吗?考虑我的代码:

let contractAddress = $("#addressContract").val();
instaceContract = web3.eth.contract(contract.abi);
contractInstance= instaceContract.at(contractAddress);

contractInstance.name.call((err, result)=>{
            if(!err){
                console.log('Name ', result)
            } else {
                console.log(err);
            }

        });

contractInstance.decimals.call((err, result)=>{
            if(!err){
                console.log('Decimals ', result)
            } else {
                console.log(err);
            }

        });

我收到了回复: 对于姓名:在此处输入图像描述

对于小数:在此处输入图像描述

4

1 回答 1

0

is BigNumber 表示法。

Solidity 使用大数字来保证精度。Javascript 数字有一个浮点数学问题,这意味着当数字变得非常大或非常小时,它们会向上或向下舍入。当这些数字可以表示货币时并不理想,因为它们确实如此。

result.toNumber()应该为您解决问题。

于 2019-02-13T05:44:01.137 回答