如何在节点js中处理非常大的数字?

时间:2017-09-26 13:51:47

标签: javascript mysql node.js numbers biginteger

我在mysql数据库中使用BigInt(20)数据类型来自动增量id。 当整数值如此之大时,如何在javascript的数字精度之后处理它,它不允许插入和读取任何数字值。那么我怎样才能做到这一点。 阅读有关大整数库但我没有获得预期结果

实施例: -

var x = 999999999999999999999999999999999999999;

如何在不使用指数值和任何垃圾值的情况下打印相同的数字?

我试过了那个

var BigNumber = require('big-number');

var x = new BigNumber(999999999999999999999999999999999999999, 10);
console.log(x);

例2: -

如果我得到最后一个插入的Id,那么我该如何处理这个值

 connection_db.query('INSERT INTO tableName SET ?', tableData, 
  function (error1, results1, fields1) {
     error1){
         // Db error
        }else{
         var lastInserted = new BigNumber(results1.insertId);
         console.log(lastInserted);// still wrong value
          }

  });

1 个答案:

答案 0 :(得分:3)

您只能传递/显示像字符串那样的大数字:

var BigNumber = require('big-number');

var x = new BigNumber('999999999999999999999999999999999999999', 10);
console.log(x.toString())

然而,最终,MySQL驱动程序如何处理这样的大数字,因为它必须考虑Number.MAX_SAFE_INTEGER

例如,mysql模块有多种与处理supportBigNumbers相关的选项(bigNumberStringsBIGINT)。