我需要能夠以最高精度(低至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支持庫。 –