Parse Float hat eine Rundungsgrenze? Wie kann ich das beheben?

8

Ich habe ein System eingerichtet, das eine kompakte Datenkette in JSON parst. Ich verwende eine 19-stellige Nummer, um IDs zu speichern. Leider eine Zahl größer als 17 Ziffern, parseFloat() rundet die letzten Ziffern.

Dies bricht die gesamte Datenkette. Kann ich das beheben?

Zum Beispiel wird 8246295522085275215 in 8246295522085276000 umgewandelt. Warum ist das?

Ссылка

    
Robert Hurst 02.11.2011, 23:58
quelle

3 Antworten

12

JavaScript hat nur einen numerischen Typ, der ein Fließkomma mit IEEE 754 doppelter Genauigkeit ist. Das heißt, Sie haben ein Maximum von 52 Bits Genauigkeit, was ein bisschen mehr als 15 Dezimalstellen ist.

Wenn Sie eine höhere Genauigkeit benötigen, müssen Sie eine Bignum-Bibliothek verwenden oder mit Strings arbeiten.

    
Michael Borgwardt 03.11.2011, 00:06
quelle
3

Zahlen in JavaScript verlieren ihre Genauigkeit, wenn sie höher als ein bestimmter Wert sind.

Laut Ссылка sind ganze Zahlen nur bis zu 15 Ziffern zuverlässig ( 9 * 10^15 , um genau zu sein).

    
ThiefMaster 03.11.2011 00:01
quelle
1

Probieren Sie eins von diesen 1. Verwenden Sie eine Zeichenfolge 2. Teilen Sie Ihre Nummer in zwei Teile und speichern Sie die kleineren Teile in einem Array 3. Bignum-Bibliothek 4. Verwenden Sie eine kleinere Zahl, wenn Sie

können     
Emanual 23.11.2013 02:31
quelle

Tags und Links