Actionscript 2.0: Problemas al pasar de texto a número |
Etiquetas: String Number parseInt |
Esta "trampa" de Flash, la descubrí la semana pasada en uno de los foros de Cristalab. Uno de los usuarios tenia problemas al pasar Strings a números en Actionscript 2.0, siempre que los Strings tuvieran algún cero por la izquierda. Por ejemplo, si en Actionscript 2.0 hacemos:
El trace devuelve...27. Como ya pensaba que era alguna especie de bug maligno de Flash, de esos que surgen en los momentos de crisis y con los que pierdes una tarde tranquilamente, se me ocurrió solucionarlo eliminando los ceros iniciales con un while:
Devuelve 33. Al mismo tiempo, Zguillez y Anduril encontraron la respuesta "lógica" a la maldad de Flash: En Actionscript 2.0, si creas un número con un 0 como cifra inicial, Flash lo toma como número octal. Por eso "033" daba 27 al pasar a número: 033 = 3x8 + 3x1 = 27 Sabiendo esto, podemos convertir la cadena a entero en base 10, mediante la función parseInt, que recibe como parámetros la cadena y la base a la que queremos convertir el número:
Devuelve 33. Por último, comentar que esto solo ocurre en Actionscript 2.0. Según la ayuda de Flash: |