Friedel: Javascript und große Zahlen

Hallo

Ich möchte in einer Seite, in der es um ein mathematisches Rätsel geht, 8 Zahlen, die der User in Input-Felder eingegeben hat, auf Plausibilität prüfen. Die Werte sind plausibel, wenn die Produkte der ersten 4 Werte und der nächsten 4 Werte jeweils genau 17! ist. Aber wie kann ich das Prüfen? Die 8 Werte sind alles integer und liegen zwischen 24 und 57120. Sie sind also nicht problematisch. Aber das Produkt daraus macht mit Probleme. Wie kann man die Werte ohne Rundungsfehler multiplizieren?

akzeptierte Antworten

  1. Hallo Friedel,

    ich könnte dich auf die BigInt Klassen verweisen, die laufen aber nicht in jedem Browser.

    Und 17! ist 355687428096000 < 9007199254740991 (Number.MAX_SAFE_INTEGER), d.h. du hast noch eine Stelle Reserve. Wenn das Produkt der eingegebenen Zahlen größer wird, kommst Du vielleicht in Rundungen des IEEE754 Formats, aber das kann Dir egal sein, der Wert ist dann ja schon von der Größenordnung her unplausibel.

    Also: Glück gehabt 😀

    Rolf

    --
    sumpsi - posui - clusi
    1. Danke. Manchmal istes schön, wenn man sich verrechnet hat 😉

  2. Hallo,

    Aber wie kann ich das Prüfen? […] Aber das Produkt daraus macht mit Probleme.

    Über den Vergleich der Teiler!?

    Gruß
    Kalk

    1. Hallo Tabellenkalk,

      coole Idee. Ist zwar etwas mühsam zu programmieren und vermutlich auch nicht extrem fix, aber solange Bigint eine Chrome-Domäne bleibt...

      Rolf

      --
      sumpsi - posui - clusi
      1. @@Rolf B

        aber solange Bigint eine Chrome-Domäne bleibt...

        Bleibt es nicht. Auch Firefox kann BigInt schon; im 67er noch hinterm Flag versteckt, im 68er für alle freigeschaltet.

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann