簡體   English   中英

使用 JSON.parse 解析數量

[英]Parsing amount with JSON.parse

它是否存在可以用 JSON.parse 解析而不會丟失精度的小數點后兩位數的最大浮點數?

例如:

JSON.parse('{"amount": 9999999999999.99}')

{amount: 9999999999999.99} // 不輸(大概)

JSON.parse('{"amount": 99999999999999.99}')

{金額:99999999999999.98} // 輸

如果x是用15顯著位或更少的十進制浮點數,然后轉換x至JavaScript的數量的類型,然后將所述結果返回給一個十進制浮點數具有相同數量的顯著位數產生准確的x,所提供的數是在正常范圍內。 因此,所有從“.00”到“9999999999999.99”小數點后兩位的十進制數字都可以解析、存儲並重新格式化為小數點后兩位,結果將是原始數字。

存儲的值通常不等於原始值。 例如,當解析“.99”時,結果將正好是 0.9899999999999999911182158029987476766109466552734375。 然而,存儲的值將足夠接近原始值,當轉換回原始位數時,原始值被恢復。 請注意,您必須知道原始數字的位數; 它本質上不是 Number 值的一部分。

15 是此屬性的下限。 可能存在一些指數值,所有 16 位十進制數字都可以在往返過程中幸存下來。 然而,由於 99999999999999.99(16 位)產生 99999999999999.98,我們知道這不是這些區間之一。

如果您想知道 9999999999999.99 和 99999999999999.99 之間的特定數字,該往返屬性首先失敗,您可能需要通過計算來尋找它。 它很多不是一個容易通過數學屬性直接計算的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM