¿Qué significa radix realmente? ¿Por qué lo necesitamos?
parseInt(10, radixValue);
¿Qué significa radix realmente? ¿Por qué lo necesitamos?
parseInt(10, radixValue);
Respuestas:
Es posible que no siempre desee analizar el número entero en un número de base 10, por lo que proporcionar la base le permite especificar otros sistemas numéricos.
La base es el número de valores de un solo dígito. Hexadecimal sería 16. Octal sería 8, Binario sería 2, y así sucesivamente ...
En la parseInt()
función, hay varias cosas que puede hacer para insinuar la base sin proporcionarla. Estos también pueden funcionar en su contra si el usuario ingresa una cadena que coincide con una de las reglas pero que no tiene la intención expresa de hacerlo. 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);
parseInt('0101')
ahora vuelve 101
. Sin embargo, los diferentes navegadores pueden tener un comportamiento diferente. Incluya siempre la base para obtener resultados fiables.
parseInt(x, 0)
por alguna razón que no recuerdo en este momento ... ¿es esto igual a lo parseInt(x, 10)
que me pregunto ahora ...?
Porque si tiene un número de cadena como 0700
y desea que la salida sea un 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
0o
lugar de0
Radix es la base de un sistema de numeración. Hay un número infinito de sistemas numéricos, pero los que la mayoría de las personas conocen son la base 10 (decimal) y la base 2 (binario).
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()
, la base le permite especificar la base que se utilizará. Por defecto, se usa una base de 10.
Sin embargo, siempre se debe especificar la base, incluso cuando se usa base 10. Considere el caso de
parseInt("010")
// Devuelve 8
A primera vista, puede esperar que la declaración devuelva 10. El uso explícito de la base ayudará a evitar confusiones:
parseInt("010", 10)
// Devuelve: 10
La raíz es el número base del sistema numérico: http://en.wikipedia.org/wiki/Radix
Normalmente, solo necesita especificar la base si desea que sea diferente de 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 base es 16 (hexadecimal). Si la cadena comienza con "0", la base es 8 (octal). Esta característica está en desuso Si la cadena comienza con cualquier otro valor, la base es 10 (decimal)
Simplemente agregando información adicional que responde claramente a la pregunta:
Si radix no está definido o es 0 (o está ausente), JavaScript asume lo siguiente:
Fuente: MDN parseInt ()
Es solo mi opinión, pero la idea de que "necesitamos usar radix" rápidamente se vuelve obsoleta. El problema era real hace algún tiempo porque las personas ajenas al mundo de las tecnologías de la información no suelen utilizar notaciones numéricas que no sean decimales y, con bastante frecuencia, proporcionan números decimales rellenados con ceros como "010". Pero dado que los números octales de ECMAScript 6 en JS tienen el prefijo "0o" y no solo "0" como estaba en ECMAScript 5 y 3. Entonces, si no se dirige a la familia IE (esa no es una situación rara ahora), puede omitir radix sin peligro.
El parámetro de la base se utiliza para especificar qué sistema numérico se utilizará, por ejemplo, una base de 16 (hexadecimal) indica que el número en la cadena debe analizarse de un número hexadecimal a un número decimal.
Si se omite el parámetro radix, JavaScript asume lo siguiente:
Si la cadena comienza con "0x", la base es 16 (hexadecimal)
Si la cadena comienza con "0", la base es 8 (octal). Esta función está obsoleta
Si la cadena comienza con cualquier otro valor, la base es 10 (decimal)
Fuente W3Schools
¿Qué es radix en paseInt ()?
La parseInt()
función analiza una cadena y devuelve un número entero. Se necesita un segundo argumento para la base , que especifica la base del número en la cadena . La base puede ser un número entero entre 2
y 36
.
La llamada a la función se parece a (Sintaxis):
parseInt(string, radix);
Algunos ejemplos para aclarar el concepto de radix
Ejemplo 1:
var a = parseInt("11", 2);
La variable de base dice que "11" está en el sistema binario, o base 2 . Por lo tanto, este ejemplo convierte la cadena "11" en un número entero 3.
Ejemplo 2:
var a = parseInt("10011", 16);
Aquí, la raíz dice parseInt()
que 10011
es un número hexadecimal y, por lo tanto, en entero, se convierte en65553
Básicamente, en pocas palabras, el argumento radix dice parseInt()
que la cadena pasada como primer parámetro es de un sistema en particular (binario, hexadecimal, etc.) y debe convertirse en un número entero como producto final.