我需要能够以全精度(低至0,因此不是0.9或更低)添加,减去和存储(通过JSON)数字,直到+/-99.99*10^2040
。我遇到的主要两个问题是Infinity远远低于那个,并且大数字会失去精确度。我非常希望不只是将整个事物转换为字符串,因为JSON文件会很快变得混乱。我想做["99", "50"]
这样的事情来象征99*10^50
但是要么丢失精度要么占用更多的空间而不仅仅是使用字符串。我也研究过biginteger库,但是出现了类似的问题,特别是将数字存储在JSON中。
答案 0 :(得分: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存储,那么你应该分别存储尾数和指数,并接受在许多情况下你将失去精度。
答案 1 :(得分:1)
big-numbers库支持json。安装:
npm install --save big-numbers
用法:
var numbers = new BigNumbers();
var bigNumber = numbers.of('75643564363473453456342378564387956906736546456235345');
console.log('Json:' + JSON.stringify(bigNumber));