2010-12-19 11 views
5

Tengo algunos ceros antes de un entero positivo. Quiero eliminar los ceros, por lo que solo queda el entero positivo. Como '001' solo será '1'. Pensé que la manera más fácil era usar parseInt ('001'). Pero lo que descubrí es que no funciona para el número 8 y 9. Ejemplo parseInt ('008') resultará en '0' en lugar de '8'.Función de JavaScript parseInt() no analiza números con el 0 inicial

Éstos son todo el código html:

<html> <body> 
<script> 
var integer = parseInt('002'); 
document.write(integer); 

</script> 
</body> </html> 

Pero ¿hay algún modo reportar este problema? ¿Alguien sabe otra solución fácil este problema? comportamiento

+0

también, eliminando los ceros a la izquierda mediante el uso de 'parseInt ('008'). ToString()' es muy torpe, considere usar 'RegExp' en su lugar –

Respuesta

10

Esto está documentado: http://www.w3schools.com/jsref/jsref_parseInt.asp

cuerdas con un líder '0' se analiza como si fueran octal.

+2

Los documentos MDN son generalmente de mucha más calidad que sus contrapartes w3schools. [Aquí tiene] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt) la página relevante de MDN. –

+1

Relevante: http://w3fools.com/ –

+0

[FireFox 21] (https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/21) ha decidido curiosamente [eliminar esta funcionalidad] (https://bugzilla.mozilla.org/show_bug.cgi?id=786135). Chrome aparentemente ha sido así por un tiempo: http://stackoverflow.com/questions/14542377 –

3

Número prefijado con cero se analiza como octal.

+2

Esa no es la [historia completa] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/ Global_Objects/parseInt) - depende del navegador y de la versión. –

15

tiene que especificar la base del número (base)

parseInt('01', 10); 
+5

Sí, y una herramienta de calidad de código JS como JSLint (http://www.jslint.com/) puede darle un aviso al respecto :) –

1

Esto no es realmente un error. Por razones de herencia, las cadenas que comienzan con 0 se interpretan en octal, y en octal no hay dígito 8. Para evitar esto, debe pasar explícitamente una raíz (es decir, parseInt("008", 10)).

Cuestiones relacionadas