Buenas gentes, estuve observando el POST y solo llegamos a hacer una simple suma pero no una calculadora para números grandes. Entendí perfectamente el código y por lo que veo, solo sirve para ello, de hecho la función se llama "suma", sin embargo, hice un pequeño estudio publicado aquí:
http://foros.cristalab.com/como-operar-con-numeros-de-mas-de-15-digitos-t91570/#571739
Este tema que abriera fue mayoritariamente porque esto era para una calculadora y no me servía inicialmente, pero luego comprendí que ciertas partes de la misma sí me servían, pero claro, como uso potencias, necesito la solución de pasar el error de sobre pasar los bits por número. Me explico:
El error sucede porque Flash trabaja con números comprendidos entre Math.pow(-2,49)=-562949953421312 y Math.pow(2,49)=562949953421312. Cuando se excede uno de estos dos valores en una potencia excede el número de lench permitidos, por tanto llegamos a la conclusión que el problema de flash es que trabaja a 8bits (Math.pow(2,

=16 o lo que sería lo mismo: String(Number(xxxxxxxx)).length<16) en dígitos numéricos, y cuando se excede esto, Flash recurre al redondeo, lo cual llama error, y lo expone a una potencia, por tanto, un número entero no puede exceder de 999999999999999 ni de -999999999999999 y un número decimal positivo no puede ser mayor que 999999999999999 ni menor 0.000000000000001.
La cosa sería hacer trabajar a Flash a 16 bits o más para ampliar este límite.
Ampliando mi experimento del otro sitio, llego a la siguiente comprobación:
Código ActionScript :
stop();
var i:Array=new Array();
i[0]=64;
for(i[1]=0;i[1]<i[0];i[1]++){
trace(i[1]+"bits = "+Math.pow(2,i[1])" = "+Math.pow(10,i[1]));
};
Pero problema inmediato, llego a otra conclusión, Flash trabaja con 14 dígitos. Cada vez entiendo menos el sistema numérico de Flash. Mirar el resultado:
0bits = 1 = 1
1bits = 2 = 10
2bits = 4 = 100
3bits = 8 = 1000
4bits = 16 = 10000
5bits = 32 = 100000
6bits = 64 = 1000000
7bits = 128 = 10000000
8bits = 256 = 100000000
9bits = 512 = 1000000000
10bits = 1024 = 10000000000
11bits = 2048 = 100000000000
12bits = 4096 = 1000000000000
13bits = 8192 = 10000000000000
14bits = 16384 = 100000000000000
15bits = 32768 = 1e+15
16bits = 65536 = 1e+16
17bits = 131072 = 1e+17
18bits = 262144 = 1e+18
19bits = 524288 = 1e+19
20bits = 1048576 = 1e+20
21bits = 2097152 = 1e+21
22bits = 4194304 = 1e+22
23bits = 8388608 = 1e+23
24bits = 16777216 = 1e+24
25bits = 33554432 = 1e+25
26bits = 67108864 = 1e+26
27bits = 134217728 = 1e+27
28bits = 268435456 = 1e+28
29bits = 536870912 = 1e+29
30bits = 1073741824 = 1e+30
31bits = 2147483648 = 1e+31
32bits = 4294967296 = 1e+32
33bits = 8589934592 = 1e+33
34bits = 17179869184 = 1e+34
35bits = 34359738368 = 1e+35
36bits = 68719476736 = 1e+36
37bits = 137438953472 = 1e+37
38bits = 274877906944 = 1e+38
39bits = 549755813888 = 1e+39
40bits = 1099511627776 = 1e+40
41bits = 2199023255552 = 1e+41
42bits = 4398046511104 = 1e+42
43bits = 8796093022208 = 1e+43
44bits = 17592186044416 = 1e+44
45bits = 35184372088832 = 1e+45
46bits = 70368744177664 = 1e+46
47bits = 140737488355328 = 1e+47
48bits = 281474976710656 = 1e+48
49bits = 562949953421312 = 1e+49
50bits = 1.12589990684262e+15 = 1e+50
51bits = 2.25179981368525e+15 = 1e+51
52bits = 4.5035996273705e+15 = 1e+52
53bits = 9.00719925474099e+15 = 1e+53
54bits = 1.8014398509482e+16 = 1e+54
55bits = 3.6028797018964e+16 = 1e+55
56bits = 7.20575940379279e+16 = 1e+56
57bits = 1.44115188075856e+17 = 1e+57
58bits = 2.88230376151712e+17 = 1e+58
59bits = 5.76460752303424e+17 = 1e+59
60bits = 1.15292150460685e+18 = 1e+60
61bits = 2.30584300921369e+18 = 1e+61
62bits = 4.61168601842739e+18 = 1e+62
63bits = 9.22337203685478e+18 = 1e+63
No entiendo nada. ¿Alguien puede echar una mano con el tema y si puede ser, dar una solución a conseguir saltarse este límite? Muchas gracias Cristalab.