为什么方法返回数组而不是数字或字符串?

问题描述 投票:1回答: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);
            }

        });

我得到了回应:名字:enter image description here

小数:enter image description here

solidity web3 web3js metamask
1个回答
0
投票

这是BigNumber表示法。

Solidity使用大数字来表示精确度。 Javascript数字有浮点数学问题,这意味着当数字变得非常大或非常小时,它们会向上或向下舍入。当这些数字可以表示金钱时,并不是理想的,因为它们确实是稳固的。

result.toNumber()应该为你做的伎俩。

© www.soinside.com 2019 - 2024. All rights reserved.