2017-08-02 46 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存儲它。 –

相關問題