Javascript 如何在Node.js中存储大量数据而不丢失任何精度?

Javascript 如何在Node.js中存储大量数据而不丢失任何精度?,javascript,json,node.js,largenumber,Javascript,Json,Node.js,Largenumber,我需要能够加、减和存储(通过JSON)高达+/-99.99*10^2040的全精度数字(低至0,因此不是0.9或更低)。我遇到的两个主要问题是,无穷远低于无穷大,而且大数字会失去精度。我非常希望不只是将整个内容转换成字符串,因为JSON文件会很快变得凌乱。我曾想过做一些类似于[“99”,“50”]的事情来象征99*10^50,但这要么会失去精度,要么会占用比使用字符串更多的空间。我也研究了biginteger库,但也出现了类似的问题,特别是在JSON中存储数字时。JavaScript没有像Jav

我需要能够加、减和存储(通过JSON)高达
+/-99.99*10^2040
的全精度数字(低至0,因此不是0.9或更低)。我遇到的两个主要问题是,无穷远低于无穷大,而且大数字会失去精度。我非常希望不只是将整个内容转换成字符串,因为JSON文件会很快变得凌乱。我曾想过做一些类似于
[“99”,“50”]
的事情来象征
99*10^50
,但这要么会失去精度,要么会占用比使用字符串更多的空间。我也研究了biginteger库,但也出现了类似的问题,特别是在JSON中存储数字时。

JavaScript没有像Java那样的处理大整数的本机对象。你需要自己实现这个逻辑,我看你已经有了一个很好的开始

或者,您可以使用这种流行的实现

您可以通过npm将其安装到node.js项目中:

npm安装大整数

然后,您可以将其包含在需要的地方:

让bigInt=require(“大整数”)

在这之后,用法非常简单:

let largeNumber=bigInt(“7564356436347345345634237856438795690667365456235345”)

如果需要浮点数

请注意,JSON不接受这两种对象类型中的任何一种。如果您必须通过JSON进行存储,那么您应该分别存储尾数和指数,并接受在许多情况下会丢失精度的事实。

库支持JSON。安装:

npm install --save big-numbers
用法:

var numbers = new BigNumbers();
var bigNumber = numbers.of('75643564363473453456342378564387956906736546456235345');
console.log('Json:' + JSON.stringify(bigNumber));

Node.JS是您唯一的选择吗?也许有更好的工具来完成这项工作。所以你想使用JS,但是你想要数字类型提供的更精确的数字,但是你不想使用现有的JS库来处理更大的数字?(或者你需要的数字甚至超出了这些库所能做的吗?)Node.js是我唯一的选择E.Sundin,除非我想从头开始重做大量代码,并可能使用我不太熟悉的语言工作。另外nnnnnnnn我找不到支持JSON的库。您可能会将这些数字作为字符串而不是数字类型存储在JSON上。正如我在帖子中提到的,我尝试过biginteger库,但没有一个库支持JSON。另外@jfriend00我不需要任何小数,只需要非常大的全精度整数。因此,假设我能够通过JSON存储它,BigInteger就可以工作了。