O que radix realmente significa? Por que precisamos disso?
parseInt(10, radixValue);
O que radix realmente significa? Por que precisamos disso?
parseInt(10, radixValue);
Respostas:
Você nem sempre deseja analisar o inteiro em um número de base 10, portanto, fornecer a raiz permite que você especifique outros sistemas numéricos.
A raiz é o número de valores para um único dígito. Hexidecimal seria 16. Octal seria 8, Binário seria 2 e assim por diante ...
Na parseInt()
função, há várias coisas que você pode fazer para indicar o radical sem fornecê-lo. Isso também pode funcionar contra você se o usuário estiver inserindo uma string que corresponda a uma das regras, mas não tenha a intenção expressa de fazê-lo. Por exemplo:
// 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')
agora retorna 101
. No entanto, navegadores diferentes podem ter comportamentos diferentes. Sempre inclua o radical para resultados confiáveis.
parseInt(x, 0)
por algum motivo que não consigo lembrar agora .. isso é igual a parseInt(x, 10)
estou me perguntando agora ...
Porque se você tem um número de string como 0700
e quer que a saída seja inteira, 700
você precisa informar parseInt()
que é um número decimal ao invés 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
vez de0
Radix é a base de um sistema de numeração. Há um número infinito de sistemas numéricos, mas aqueles com os quais a maioria das pessoas está familiarizada são a base 10 (decimal) e a base 2 (binário).
Os valores numéricos podem ser interpretados de maneira diferente em diferentes bases. Por exemplo, o número 10 em binário pode ser representado como 2 em decimal.
No caso de parseInt()
, o radical permite que você especifique a base a ser usada. Por padrão, um radical de 10 é usado.
No entanto, a raiz deve sempre ser especificada, mesmo quando usando a base 10. Considere o caso de
parseInt("010")
// Retorna 8
À primeira vista, você pode esperar que a instrução retorne 10. O uso explícito do radix ajudará a evitar confusão:
parseInt("010", 10)
// Retorna: 10
O radix é o número base do sistema numérico: http://en.wikipedia.org/wiki/Radix
Normalmente, você só precisa especificar o radical se quiser que seja diferente de 10. Mais especificamente (de http://www.w3schools.com/jsref/jsref_parseInt.asp ):
Se o parâmetro radix for omitido, JavaScript assumirá o seguinte:
Se a string começa com "0x", a raiz é 16 (hexadecimal). Se a string começa com "0", a raiz é 8 (octal). Este recurso está obsoleto Se a string começar com qualquer outro valor, a raiz é 10 (decimal)
Basta adicionar algumas informações adicionais que respondem claramente à pergunta:
Se radix for indefinido ou 0 (ou ausente), JavaScript assume o seguinte:
Fonte: MDN parseInt ()
É apenas minha opinião, mas a ideia de que "precisamos usar radix" rapidamente se torna desatualizada. O problema realmente era real há algum tempo, porque as pessoas fora do mundo de TI geralmente não usam notações numéricas além de decimais e muitas vezes fornecem números decimais com zeros como "010". Mas como os números octais ECMAScript 6 em JS são prefixados por "0o" e não apenas "0" como era em ECMAScript 5 e 3. Portanto, se você não visar a família do IE (essa não é uma situação rara agora), você pode pular o radical com segurança.
O parâmetro raiz é usado para especificar qual sistema numeral a ser usado, por exemplo, uma raiz de 16 (hexadecimal) indica que o número na string deve ser analisado de um número hexadecimal para um número decimal.
Se o parâmetro radix for omitido, JavaScript assumirá o seguinte:
Se a string começar com "0x", a raiz é 16 (hexadecimal)
Se a string começar com "0", a raiz é 8 (octal). Este recurso está obsoleto
Se a string começar com qualquer outro valor, a raiz é 10 (decimal)
Fonte W3Schools
O que é radix em paseInt ()?
A parseInt()
função analisa uma string e retorna um inteiro. Leva um segundo argumento para a raiz , que especifica a base do número na string . A raiz pode ser um número inteiro entre 2
e 36
.
A chamada de função se parece com (sintaxe):
parseInt(string, radix);
Alguns exemplos para esclarecer o conceito de raiz
Exemplo 1:
var a = parseInt("11", 2);
A variável raiz diz que "11" está no sistema binário, ou base 2 . Portanto, este exemplo converte a string "11" em um número inteiro 3.
Exemplo 2:
var a = parseInt("10011", 16);
Aqui, a raiz diz ao parseInt()
que 10011
é um número hexadecimal e, portanto, um inteiro, ele é convertido para65553
Basicamente, encurtando a história, o argumento raiz diz parseInt()
que a string passada como primeiro parâmetro é de um sistema particular (binário, hexadecimal etc.) e precisa ser convertida em um inteiro como um produto final.