在松露测试中,我尝试使用以下代码将两个大数字加在一起:
myBignumber = new web3.utils.BN(1);
myBignumber.add(2)
但是它导致了这个错误:
无法在数字2上创建属性“负”
版本:
答案 0 :(得分:1)
或者,您也可以将数字2实例化为大数字以解决错误:
myBignumber = new web3.utils.BN(1);
myBignumber.add(new web3.utils.BN(2));
通过这种方式,您不必安装另一个BigNumber库。
答案 1 :(得分:0)
Web3上使用的BN存在一些未解决的问题(ref)
建议的替代方法:
尝试使用另一个具有有效加法功能(like this)的BigNumber库。
要使用该库,请安装它:
npm install bignumber.js
现在进行松露测试:
var BigNumber = require("bignumber.js");
...
myBignumber = new web3.utils.BN(1);
myBignumber.add(2)
答案 2 :(得分:0)
如果您要向Number
添加Java语言原生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'
如果您希望将一个BN
添加到另一个BN
,
使用.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'