【发布时间】:2015-06-02 17:21:26
【问题描述】:
我正在尝试将以下大整数转换为 javascript 中的字符串,但没有成功。我的目标最终会是 '582235852866076672'
var foo = 582235852866076672;
console.log(foo); // 582235852866076700
var baz = "'" + 582235852866076672 + "'";
console.log(baz); // '582235852866076700'
var emptyString = 582235852866076672+'';
console.log(emptyString); // 582235852866076700
var n = foo.toString();
console.log(n); // 582235852866076700
我认为这个数字太大了,结果导致精度下降。 我包含了bigint library,但没有成功:
var bigint = require('bigint');
var bigintLibrary = bigint(582235852866076672).toString();
console.log(bigintLibrary); //582235852866076700
bigint 库中的 toSting 方法说明:
“将请求的base中的bigint实例打印为字符串。”
感谢所有帮助和 cmets。谢谢。
【问题讨论】:
-
号码从何而来?您所说的数字不能作为普通的javascript数字存在,因此来源很重要。
-
@AaronDufour 数字来自发布请求的参数,我试过 var jsonString = JSON.stringify(582235852866076672);具有相同的结果 console.log(jsonString); // 582235852866076700.
-
那么您将不得不手动解析参数。除非您可以让客户端将其作为字符串而不是数字传递?一旦库将其解析为数字,精度就会丢失,因此当它到达您的代码时为时已晚。
标签: javascript string node.js bigint