Thomas Meinike: Zahlen nicht Runden

Beitrag lesen

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