2011-07-07 21 views

Respuesta

46

No siempre puede ser que desee analizar el número entero en un número de base 10, por lo que el suministro de la raíz que permite especificar otros sistemas numéricos.

La raíz es el número de valores para un solo dígito. Hexidecimal sería 16. Octal sería 8, Binary sería 2, y así sucesivamente ...

En la función , hay varias cosas que puede hacer para insinuar la raíz sin suministrarla. Estos también pueden funcionar en su contra si el usuario está ingresando una cadena que coincide con una de las reglas, pero que no significa expresamente. Por ejemplo:

// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5. 
// These days, browsers will treat '0101' as decimal. 
var result = parseInt('0101'); 

// Numbers that start with 0x use a radix of 16 (hexidecimal) 
var result = parseInt('0x0101'); 

// Numbers starting with anything else assumes a radix of 10 
var result = parseInt('101'); 

// Or you can specify the radix, in this case 2 (binary) 
var result = parseInt('0101', 2); 
+2

Así parseInt ('0101') da 101 o 65? – Vivekh

+4

@Vivekh - Solía ​​respaldarlo 2011 cuando originalmente publiqué la respuesta. Una comprobación rápida en Google Chrome parece indicar que han cambiado un poco. 'parseInt ('0101')' ahora devuelve '101'. Sin embargo, diferentes navegadores pueden tener un comportamiento diferente. Siempre incluya el radix para obtener resultados confiables. –

+0

@Vivekh: puede ver la documentación más reciente en https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt –

18

Porque si usted tiene un número de cuerda como 0700 y desea que la salida sea número entero 700 debe informar parseInt() que es un número decimal en lugar de octal.

console.log(parseInt("0700")); 
// 448 

// I really wanted decimal (base 10) 
console.log(parseInt("0700", 10)); 
// 700 

// What is this? Binary, Decimal, Octal? 
console.log(parseInt("0110")); 
// 72 

// as binary 
console.log(parseInt("0110", 2)); 
// 6 

Nota yo sólo respondí mitad de su pregunta. Vea a otros para obtener buenas definiciones de lo que realmente es una raíz.

+1

Además, parseInt binario ('10101', 2) – Joe

3

La raíz es el número base del sistema de numeración: http://en.wikipedia.org/wiki/Radix

Normalmente, sólo necesita especificar la raíz si se quiere que sea diferente a 10. Más específicamente (de http://www.w3schools.com/jsref/jsref_parseInt.asp):

Si se omite el parámetro radix, JavaScript asume lo siguiente:

Si la cadena comienza con "0x", la raíz es 16 (hexadecimal) Si los STRI ng comienza con "0", la raíz es 8 (octal). Esta característica está en desuso Si la cadena empieza con cualquier otro valor , la raíz es 10 (decimal)

0

El parámetro radix se utiliza para especificar que sistema de numeración que se utiliza, por ejemplo, un radix de 16 (hexadecimal) indica que el número en la cadena debe ser analizada desde un número hexadecimal hasta un número decimal .

Si se omite el parámetro radix, JavaScript supone lo siguiente:

Si la cadena comienza con "0x", el radix es 16 (hexadecimal)

Si la cadena comienza con "0" , la raíz es 8 (octal).Esta función está obsoleta

Si la cadena comienza con cualquier otro valor , la raíz es 10 (decimal)

Fuente W3Schools

3

Radix es la base de un sistema de numeración. Hay un número infinito de sistemas numéricos, pero aquellos con los que la mayoría de la gente está familiarizada son base 10 (decimal) y base 2 (binaria).

Los valores numéricos se pueden interpretar de manera diferente en diferentes bases. Por ejemplo, el número 10 en binario se puede representar como 2 en decimal.

En el caso de parseInt(), el radix le permite especificar la base que se utilizará. Por defecto, se usa una raíz de 10.

Sin embargo, la raíz debe especificarse siempre, incluso cuando se utiliza la base 10. Considere el caso de

parseInt("010") // devuelve 8

A primera vista, se puede esperar la declaración para volver 10. explícita el uso de la base ayudará a evitar la confusión:

parseInt("010", 10) // Devuelve: 10

0

sólo añadir alguna información adicional que claramente responde a la pregunta:

Si radix es indefinido o 0 (o ausente), JavaScript asume lo siguiente:

  • [...]
  • Si la cadena de entrada comienza con "0", la base es de ocho (octal) o 10 (decimal). Exactamente qué radix se elige depende de la implementación. ECMAScript 5 especifica que se usa 10 (decimal), pero no todos los navegadores lo admiten todavía. Por este motivo, siempre especifique una raíz cuando use parseInt.
  • [...]

Fuente: MDN parseInt()

Cuestiones relacionadas