我与以下函数签订了合同:
function supply () constant returns (uint sup) {
sup = 100;
return sup;
}
正在运行
var token = web3.eth.contract(contractAbi).at(contractAddress);
token.supply.call()
返回:
{ [String: '0'] s: 1, e: 0, c: [ 0 ] }
这里有什么问题?合同中的所有功能都会发生这种情况。
谢谢!
答案 0 :(得分:3)
你得到的是“BigNumber”格式,uint(256)的情况总是这样,因为数字大于Javascript实际可以处理的数字。
考虑使用返回的值格式。示例/文档:https://github.com/ethereum/wiki/wiki/JavaScript-API#a-note-on-big-numbers-in-web3js
松露风格(承诺)
token.supply.call().then(function(returned) {
console.log(returned.toString(10));
}
回调风格
token.supply.call(function(error, returned) {
if(!error) {
console.log(returned.toString(10));
} else {
console.error(error);
});
以上示例可能会失去一些精确度。从上面链接的文档......
建议始终保持平衡,只有转换 在向用户展示时,它会出现在其他单位:
希望它有所帮助。
<强>更新强>
合同在Remix中适用于我,因此我将专注于您调用该功能的方式以及等待响应。