【发布时间】:2017-09-26 13:51:47
【问题描述】:
我在 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
}
});
【问题讨论】:
-
不要认为 BIGINT(20) 会生成一个 20 位数的 int。(20) 仅适用于 mysql 的 zerofull 函数... BIGINT 的最小值和最大值在这里dev.mysql.com/doc/refman/5.5/en/integer-types.html ..
-
@robertklep 提供了一个很好的答案。我想补充另一个想法。根据您的具体环境,JavaScript 为您提供高达 2^53 - 1 的“安全整数”。MySQL 的 BIGINT 是(取决于您的安装)一个 64 位值。因此,如果 2^53 - 1 (= 9007199254740991) 足以满足您的需求,那么无论如何您都可以使用这种组合(当然要注意界限)。
标签: javascript mysql node.js numbers biginteger