Zahlen nicht Runden
Andavos
- javascript
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
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
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
Andavos,
Wozu brauchst du alle 290 Dezimalstellen?
Gunnar
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
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
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