[英]How to pass number as uint256 to Solidity function using web3.js
[英]Is it possible to get uint256 value from Solidity using web3.js
所以问题很简单。 我正在调用返回uint256值的合同方法。 是否有可能完全在JavaScript中获得该价值? 据我了解,JavaScript不能与大数一起使用,解决方案是制定新的合同,将数据返回为字符串? 现在,我得到的值只是减少了很多零:)
Web3返回原始数据类型(包括uint
)作为字符串。 如果您尝试使用parseInt
内容将其解析为javascript本地数字,则它将失败。
要处理通过web3收到的大量数字,您必须使用可以处理它们的库。 BigNumber.JS
https://github.com/MikeMcl/bignumber.js/
因此,您可以像这样使用它:
let result = BigNumber(await bigNumber.methods.getNum1().call());
并使用BigNumber.js实现的数学运算
result = result.plus("99999999999999999999999999999999999999");
请注意,如果您只是尝试使用结果值本身
console.log(result);
你会得到这样的结果
BigNumber {
s: 1,
e: 38,
c: [ 10000000213, 12312312312312, 45465777775431 ] }
因此,您可能最终希望将其转换为字符串
console.log(result.toString());
以可读形式获取结果,例如:
1.00000002131231231231231245465777775431e+38
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.