2009-07-06 7 views
8

Für eine Webanwendung möchte ich in der Lage sein, Zahlen von bis zu 64 Bit zu verarbeiten. Während des Tests habe ich festgestellt, dass JavaScript (oder der Browser als Ganzes) so viel wie 17 Ziffern zu behandeln scheint. Eine 64-Bit-Nummer hat maximal 20 Ziffern, aber nachdem das Javascript die Nummer behandelt hat, werden die drei letzten Ziffern gerundet und auf 0 gesetzt. Irgendwelche Ideen, woher das kommt? Noch wichtiger, jede Idee, wie man es umgehen kann?Wie kann ich in Firefox/IE7 mit Zahlen umgehen, die größer als 17 Ziffern sind?

Antwort

5

In Javascript, alle Zahlen sind IEEE double precision Gleitkommazahlen erreicht haben, was bedeutet, dass Sie nur etwa 16 Stellen genau haben; der Rest der 64 Bits ist für den Exponenten reserviert. Wie Fabien bemerkt, müssen Sie einige Tricks anwenden, um mehr Präzision zu erreichen, wenn Sie alle 64 Bits benötigen.

5

Ich glaube, Sie brauchen, um sie als Zeichenfolgen zu behandeln, wenn Sie Javascript Limit (see here)

0

Sie könnten versuchen, sie in zwei oder mehr Zahlen aufzuteilen (in einer Klasse vielleicht), aber Sie benötigen möglicherweise einige arithmetische Hilfsfunktionen, um mit ihnen zu arbeiten.

Prost

2

Wie andere beachten, implementiert JS verdoppelt, so dass Sie woanders suchen, um größere Zahlen zu behandeln. BigInt ist eine Bibliothek für arbiträre Präzisionsmathematik für Ganzzahlen.

Verwandte Themen