Andavos: Zahlen nicht Runden

Hallo,
also ich möchte in JavaScript zwei größere Zahlen protenzieren, allerdings soll das Ergebnis nicht als 10er Potenz ausgegeben werden, denn ich brauche die genaue Zahl.

Hab z.B. folgenden Script:
var asciiberechnen = 111222333444555666;
var E = 17;
C = Math.pow(asciiberechnen,E);
alert(C);

Da kommt dann etwas mit 6e+289, allerdings bräuchte ich 60000000000000....

Kennt jemand die Funktion dazu und ist das überhaupt möglich?

MFG
Andavos

  1. Da kommt dann etwas mit 6e+289, allerdings bräuchte ich 60000000000000....

    Kennt jemand die Funktion dazu

    Eher nicht. Die musst du dir selber machen. Die JavaScript-eigene Interger-Arithmetik reicht nicht.

    und ist das überhaupt möglich?

    Klar. Du musst dir ein Zahlenformat überlegen (könnte ein Array sein), das genug Stellen hat, um so große Zahlen aufnehmen zu können, und dann die Rechenoperationen dafür implementieren.

    Gunnar

    --
    "Nobody wins unless everybody wins." (Bruce Springsteen)
    1. Hallo,
      hmm könnte mir da evt. einer Helfen, oder hat evt. einer schon eine fertige Implementierung?
      Denn ich kenn mich nicht wirklich gut in JavaScript aus.

      MFG
      Andavos

      1. Andavos,
        Wozu brauchst du alle 290 Dezimalstellen?
        Gunnar

        --
        "Nobody wins unless everybody wins." (Bruce Springsteen)
        1. Hallo,
          weil ich gerade an einer RSA Implementierung, die auch sicher sein soll, in JavaScript arbeite.

          Und wenn ich nicht den genauen Wert habe, dann kann ich das auch nicht wieder entschlüsseln, denn dazu brauche ich auch den genauen Wert.

          MFG
          Andavos

          1. gruss Andavos

            weil ich gerade an einer RSA Implementierung, die auch sicher sein
            soll, in JavaScript arbeite.

            Dave Shapiro hat so ein ding http://www.ohdave.com/rsa/ schon
               am laufen - http://www.ohdave.com/rsa/RSA.js - und somit auch

            Und wenn ich nicht den genauen Wert habe, dann kann ich das auch
            nicht wieder entschlüsseln, denn dazu brauche ich auch den genauen
            Wert.

            eine loesung fuer das problem der grossen zahlen:
               http://www.ohdave.com/rsa/BigInt.js

            by(t)e by(t)e - peterS. - pseliger@gmx.net

            --
            br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
  2. Hallo,

    also ich möchte in JavaScript zwei größere Zahlen protenzieren, allerdings soll das Ergebnis nicht als 10er Potenz ausgegeben werden, denn ich brauche die genaue Zahl.

    Hab z.B. folgenden Script:
    var asciiberechnen = 111222333444555666;
    var E = 17;
    C = Math.pow(asciiberechnen,E);
    alert(C);

    Da kommt dann etwas mit 6e+289, allerdings bräuchte ich 60000000000000....

    Wenn PHP verfuegbar ist und die BCD-Funktionen (BCD = Binary Coded Decimals) aktiv sind [siehe phpinfo()], dann nutze bcpow():

    <?php

    $asciiberechnen = "111222333444555666";
    $E = "17";
    $C = bcpow($asciiberechnen,$E);
    print $C;

    /*
    Ergebnis:
    6099075924115883127911743897498298308354007530017057842
    2904869138076243925229027249034173855139308432303102869
    9892280204740789114114365252708979541242203333657311656
    0695861893002965852735198820161008002100459397450860395
    6144859899398318795917836907849768332141341433294854124
    361277148102656
    */

    ?>

    Ansonsten suche nach Routinensammlungen, die die BCD-Funktionen implementieren und portiere diese nach JS.

    Es gibt solche Routinen im Quellcode z. B. fuer diverse BASIC-Dialekte im kommerziellen Paket "ProMath" von TeraTech: http://www.teratech.com/product/productdetail.cfm?product=PM3. Mein Testbericht zur Version 2.0 (aktuell 3.0) beschreibt die wesentlichen Techniken: http://www.et.fh-merseburg.de/person/meinike/PDF/bp295tm.pdf.

    MfG, Thomas