Calling web3.utils.BN.add gives error: Cannot create property 'negative' on number
Calling web3.utils.BN.add gives error: Cannot create property 'negative' on number
在松露测试中,我尝试使用以下代码将两个大数相加:
myBignumber = new web3.utils.BN(1);
myBignumber.add(2)
但它导致了这个错误:
Cannot create property 'negative' on number 2
版本:
- 松露 5.0
- Web3 1.0
Web3 使用的 BN 有一些未解决的问题 (ref)
建议的备选方案:
尝试使用另一个具有有效加法函数的 BigNumber 库 (like this)。
要使用库安装它:
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);
或者,您也可以将数字 2 实例化为一个大数字来解决错误:
myBignumber = new web3.utils.BN(1);
myBignumber.add(new web3.utils.BN(2));
这样您就不必安装另一个 BigNumber 库了。
如果您要将 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'
如果您想将一个 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'
在松露测试中,我尝试使用以下代码将两个大数相加:
myBignumber = new web3.utils.BN(1);
myBignumber.add(2)
但它导致了这个错误:
Cannot create property 'negative' on number 2
版本:
- 松露 5.0
- Web3 1.0
Web3 使用的 BN 有一些未解决的问题 (ref)
建议的备选方案:
尝试使用另一个具有有效加法函数的 BigNumber 库 (like this)。
要使用库安装它:
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);
或者,您也可以将数字 2 实例化为一个大数字来解决错误:
myBignumber = new web3.utils.BN(1);
myBignumber.add(new web3.utils.BN(2));
这样您就不必安装另一个 BigNumber 库了。
如果您要将 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'
如果您想将一个 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'