我需要能够以最高精度(低至0,因此不低于0.9)对+/-99.99*10^2040
进行加,减和存储(通过JSON)数字。我遇到的两个主要问题是Infinity远远低于这个数字,并且大数字会失去精度。我非常喜欢不仅仅把整个事情转换成一个字符串,因为JSON文件很快就会变得混乱。我以为像["99", "50"]
这样的东西象征着99*10^50
,但是它要么失去精度,要么占用比使用字符串更多的空间。我也研究过biginteger库,但是会出现类似的问题,尤其是将数字存储在JSON中。如何在Node.js中存储极大数量而不会丢失任何精度?
回答
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存储,那么您应该分别存储尾数和指数,并且接受在很多情况下您将失去精度。
您可能会将这些数字作为字符串存储在JSON中,而不是数字类型。 – jfriend00
正如我在我的文章中提到的,我已经尝试过biginteger库,它们都没有JSON支持。另外@ jfriend00我不需要任何小数,只是非常大的全精度整数。所以BigInteger会假设我能够通过JSON存储它。 –
- 1. 如何创建gif而不会丢失任何图像质量
- 2. 大值丢失精度
- 3. 转换条款值,而不会丢失精度(分数)
- 4. 可能会丢失精度
- 5. 如何添加大量的圈子而不会丢失性能?
- 6. 将浮点数保存为整数而不会丢失浮点精度
- 7. 极限字符在div中显示而不会丢失格式
- 8. 如何将浮点数转换为double(都存储在IEEE-754表示中)而不会失去精度?
- 9. 如何在F#中表示分数而不损失精度?
- 10. 双精度丢失
- 11. 双精度丢失
- 12. 如何将微分转换为美元而不丢失小数精度?
- 13. 在SQLite中存储双精度值:如何确保精度?
- 14. 如何将图像保存到iPhone中而不会丢失质量?
- 15. Java:错误:可能会丢失精度
- 16. 如何处理UnicodeDecodeError而不丢失任何数据?
- 17. 如何乌龟移动存储库而不丢失历史
- 18. 目的C--用浮点数除长而不丢失精度
- 19. 如何BigDecimal在数字转换为双号,而不会丢失任何数量的
- 20. python中精度浮点数的丢失
- 21. 缩放EditText而不会丢失质量?
- 22. 如何获得变量的值而不会丢失它的值?
- 23. 如何根据纵横比调整图像大小而不会丢失质量?
- 24. 如何将CV_32F类型CV :: Mat保存到文件而不会丢失精确度?
- 25. 如何将极大的数组存储在文件中
- 26. Android如何将字符串转换为双精度不丢失精度?
- 27. 如何在opencv中合并两张图像而不会丢失亮度
- 28. 在Python中随机丢失精度ReadLine()
- 29. 如何使用子视图保存UIView而不会丢失质量?
- 30. 降低图像高度而不会丢失质量
Node.JS是您唯一的选择吗?也许这个工作有更好的工具。 –
所以你想要使用JS,但你想要的数字类型提供了更精确的数字,但是你*不想*使用现有的更大数量的JS库之一? (或者是你需要的数字,除了这些库能做什么之外呢?) – nnnnnn
Node.js是我唯一的选择E.Sundin,除非我想从头开始重做大量代码并且可能使用某种语言工作我不太熟悉也nnnnnn我一直无法找到一个JSON支持库。 –