Hi,
ich arbeite derzeit an einer Javascript-Programmierung bei der ich mit sehr großen Zahlen rechnen und diese vergleichen muss.
Es handelt sich dabei um Binärzahlen also 2 hoch x.
Die zu vergleichen ist ja simpel: einfach den Exponenten vergleichen. Ich glaube kaum, das der Exponent 9007199254740992 überschreitet, oder?
Damit rechnen wird natürlich nicht ganz so einfach.
Multiplizieren und dividieren geht nach den üblichen Regeln (Exponenten addieren bzw subtrahieren, Vorzeichen nicht vergessen!), Addition und Subtraktion ist etwas schwieriger, geht aber auch relativ simpel.
Es kann aber auch sein, das Du mißverstanden wirst und mit "echten Zahlen" (Dezimalzahlen) operieren möchtest.
Das geht dann wie in der Grundschule.
Ja, das ist wenig effektiv, aber wirklich _sehr_ einfach in der Implementation.
Sehr große Zahlen -- also jenseits von gut und böse, mehr z.B. als zur Zählung aller möglichen Quantenzustände im Universum nötig wären, Du verstehst? -- wären evt günstiger mit einer Fast Fourier Transformation beizukommen, aber auch da gibt es noch ein paar Zwischenschritte davor und der Kapitulation danach.
Mir ist aufgefallen, dass JS bis Math.pow(2,54); funktioniert, er also richtige Zahlen auswirft. Danach kommt er dann nicht mehr zurecht und verrechnet sich bzw. gibt dann Zahlen mit e+trallala aus.
Nein, da wird sich nicht verrechnet, das ist alles so korrekt.
Das kann ich allerdings gar nicht gebrauchen und denke mal, dass das mit dem Zahlenformat von JS zusammenhängt.
Nein, das ist durchaus Standard.
Kann man da was machen, z.B. das Zahlenformat ändern oder muss man einfach damit leben ?
Normalerweise kann man da durchaus mit leben. Verschlüsselungsalgorithmen brauchen zwar für gewöhnlich mehr als die 64 Bit, aber auch da ist die Länge fix und deshalb ohne großes Gewürge behandelbar, einfach D&C.
so short
Christoph Zurnieden