在松露测试中,我试图使用以下代码将两个大数字相加:
myBignumber = new web3.utils.BN(1);
myBignumber.add(2)
但它导致了这个错误:
无法在2号上创建属性"负数">
版本:
- 松露5.0
- Web3 1.0
或者,您也可以将数字2实例化为一个大数字来解决错误:
myBignumber = new web3.utils.BN(1);
myBignumber.add(new web3.utils.BN(2));
这样,您就不必安装另一个BigNumber库。
Web3中使用的BN存在一些未解决的问题(参考)
建议的替代方案:
请尝试使用另一个具有有效加法函数的BigNumber库(如下图所示)。
要使用库安装它:
npm install bignumber.js
现在进行松露测试:
var BigNumber = require("bignumber.js");
...
// Instead of the commented lines, use the next, uncommitted, ones:
// myBignumber = new web3.utils.BN(1);
// myBignumber.add(2)
myBignumber = new BigNumber(1);
myBignumber.plus(2);
如果要将Javascript本机Number
添加到BN
,使用.addn()
:
const myBignumber = new web3.utils.BN(1);
myBignumber.addn(2);
// BN { negative: 0, words: [ 3 ], length: 1, red: null }
myBignumber.addn(2).toString();
// '3'
如果您希望将一个CCD_ 4添加到另一CCD_,使用.add()
:
const myBignumber = new web3.utils.BN(1);
myBignumber.add(new web3.utils.BN(2));
// BN { negative: 0, words: [ 3 ], length: 1, red: null }
myBignumber.add(new BN(2)).toString();
// '3'