2017-08-02 20 views
0

我需要能够以最高精度(低至0,因此不低于0.9)对+/-99.99*10^2040进行加,减和存储(通过JSON)数字。我遇到的两个主要问题是Infinity远远低于这个数字,并且大数字会失去精度。我非常喜欢不仅仅把整个事情转换成一个字符串,因为JSON文件很快就会变得混乱。我以为像["99", "50"]这样的东西象征着99*10^50,但是它要么失去精度,要么占用比使用字符串更多的空间。我也研究过biginteger库,但是会出现类似的问题,尤其是将数字存储在JSON中。如何在Node.js中存储极大数量而不会丢失任何精度?

+1

Node.JS是您唯一的选择吗?也许这个工作有更好的工具。 –

+0

所以你想要使用JS,但你想要的数字类型提供了更精确的数字,但是你*不想*使用现有的更大数量的JS库之一? (或者是你需要的数字,除了这些库能做什么之外呢?) – nnnnnn

+0

Node.js是我唯一的选择E.Sundin,除非我想从头开始重做大量代码并且可能使用某种语言工作我不太熟悉也nnnnnn我一直无法找到一个JSON支持库。 –

回答

1

JavaScript没有处理像Java那样的大整数的本地对象。你需要自己实现逻辑,我发现你已经有了一个很好的开始。然而,这将是非常多余的,因为之前已经完成。 Here's a library for BigInteger native in JavaScript.

您可以通过NPM此安装到您的Node.js的项目:

npm install big-integer

然后,可以将其包含在你需要它:

var bigInt = require("big-integer");

在这之后,用法很简单:

var largeNumber = bigInt("75643564363473453456342378564387956906736546456235345");

如果你需要浮点数,Here's another node library for handling BigDecimal.

注意,JSON不接受这两种对象类型。如果您绝对必须通过JSON存储,那么您应该分别存储尾数和指数,并且接受在很多情况下您将失去精度。

+0

您可能会将这些数字作为字符串存储在JSON中,而不是数字类型。 – jfriend00

+0

正如我在我的文章中提到的,我已经尝试过biginteger库,它们都没有JSON支持。另外@ jfriend00我不需要任何小数,只是非常大的全精度整数。所以BigInteger会假设我能够通过JSON存储它。 –

相关问题