我试图通过Metamask中的web3从Solidity Contract中获取数据。 我不明白为什么我得到数组而不是数字或字符串? 也许您知道从以太坊合约中获取正常数据的其他方法吗? 考虑我的代码:
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);
}
});
答案 0 :(得分:0)
是BigNumber表示法。
Solidity使用大量数字来提高精度。 JavaScript数字具有浮点数学问题,这意味着当数字很大或很小时,它们会四舍五入。当这些数字可以表示货币时,就像在扎实的记录中那样,它并不理想。
result.toNumber()
应该为您解决问题。