Javascript 是否可以使用web3.js从Solidity获取uint256值

Javascript 是否可以使用web3.js从Solidity获取uint256值,javascript,solidity,web3js,Javascript,Solidity,Web3js,所以问题很简单。我正在调用返回uint256值的contract方法。有可能在JavaScript中获得该值吗?据我所知,JavaScript无法处理大数字,解决方案是制定以字符串形式返回数据的新合同?现在我得到了一个值,它简单地削减了很多零:)Web3将原始数据类型(包括uint)作为字符串返回。如果您尝试使用类似于parseInt的东西将其解析为javascript本机编号,则会失败 要处理通过web3接收到的大量数据,您必须使用能够处理这些数据的库。一个这样的库是BigNumber.JS

所以问题很简单。我正在调用返回uint256值的contract方法。有可能在JavaScript中获得该值吗?据我所知,JavaScript无法处理大数字,解决方案是制定以字符串形式返回数据的新合同?现在我得到了一个值,它简单地削减了很多零:)

Web3将原始数据类型(包括
uint
)作为字符串返回。如果您尝试使用类似于
parseInt
的东西将其解析为javascript本机编号,则会失败

要处理通过web3接收到的大量数据,您必须使用能够处理这些数据的库。一个这样的库是
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

好吧,没关系。。。显然,您可以直接调用.toString();在结果中,您从ITA获得并解析所需的值,实际上BignumberJS已经在Web3JS中。所以,是的,我得到了这个有趣的数组作为结果,这在文档中并不明显,您可以简单地调用它的.toString()方法,以获取字符串形式的实际数字