美文网首页
web3.js中的BigNumber依赖库

web3.js中的BigNumber依赖库

作者: 花爬满篱笆 | 来源:发表于2020-04-07 19:07 被阅读0次

    JavaScript中默认的数字精度比较小。如下图所示:



    为了保证我们的数字的准确度,web3.js中添加了一个依赖库BigNumber,专门用于大数处理。
    1、首先新建一个文件夹,用于测试我们的bignumber库。下载web3库。

    >mkdir web3_test
    >npm init//生成package.json文件
    >npm install web3@0.20.1 --save-dev
    >cd node_modules
    >ls//可以查看下node_modules中文件结构'''
    
    node_modules中文件.png

    2、重新打开另一个terminal,node进入控制台。

    >var balance = new BigNumber('11112222333344444555555666666777777888889999')
    

    显示错误:ReferenceError: BigNumber is not defined
    需要引入bignumber.js,定义BigNumber.

    > var BigNumber = require('bignumber.js')
    undefined
    
    > var balance4 = new BigNumber('-123456789123456789.11111222223333344444555556666677777')
    undefined
    > balance4
    BigNumber {
      s: -1,
      e: 17,
      c: 
       [ 1234,
         56789123456789,
         11111222223333,
         34444455555666,
         66777770000000 ] }
    
    > var balance5 = new BigNumber('123456789123456789.11111222223333344444555556666677777')
    undefined
    > balance5
    BigNumber {
      s: 1,
      e: 17,
      c: 
       [ 1234,
         56789123456789,
         11111222223333,
         34444455555666,
         66777770000000 ] }
    
    > var balance2 = new BigNumber('111222333444555666777888999')
    undefined
    > balance2
    BigNumber { s: 1, e: 26, c: [ 1112223334445, 55666777888999 ] }
    

    可以看出,经过bignumber转换之后,可以完整的保留我们数据的精度。
    BigNumber中包含三个参数,s,e,c。
    s:符号,1表示正数,-1表示负数
    e:整数部分的位数,注意这个数值等于数据整数个数-1。
    c:将数据切段存储,14位切割一次,小数部分不足14位,后面补0。
    为了方便查看,还可以将数值转换成字符串,并指定进制。
    >balance2.toString(2)//转换为二进制字符串
    >balance2.toString(16)//转换为十六进制字符串
    

    相关文章

      网友评论

          本文标题:web3.js中的BigNumber依赖库

          本文链接:https://www.haomeiwen.com/subject/xpznphtx.html