为什么我们需要使用基数?

Joh*_*per 75 javascript

radix究竟意味着什么?我们为什么需要它?

parseInt(10, radixValue); 
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 89

您可能并不总是希望将整数解析为基数为10的数字,因此提供基数可以指定其他数字系统.

基数是单个数字的值的数量.十六进制将是16.八进制将是8,二进制将是2,依此类推......

parseInt()函数中,有几件事可以做,以提示基数而不提供它.如果用户输入的字符串与其中一个规则匹配但不明确表示,则这些也可能对您不利.例如:

// 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);
Run Code Online (Sandbox Code Playgroud)

  • @Vivekh - 当我最初发布答案时,曾经支持2011年.快速检查谷歌浏览器似乎表明他们已经改变了一点.`parseInt('0101')`现在返回`101`.不同的浏览器可能有不同的行为.始终包含基数以获得可靠的结果. (5认同)
  • 所以parseInt('0101')给出101或65? (2认同)

Mic*_*ski 28

因为如果你有一个字符串数字,0700并希望输出是整数,700你需要通知parseInt()它是十进制数而不是八进制数.

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
Run Code Online (Sandbox Code Playgroud)

注意我只回答了你问题的一半.有关基数实际是什么的良好定义,请参阅其他人.

  • console.log(parseInt("0700")); 返回 //700 而不是 448。 (4认同)
  • @Naren 8年前,在我运行的任何浏览器控制台中,它都是448。在现代Chrome和Node中,我今天也得到了700,但也许当时这是未定义的行为。 (2认同)

Mat*_*arz 7

基数是数字系统的基数: http: //en.wikipedia.org/wiki/Radix

通常,如果您希望它不同于 10,则只需指定基数。更具体地说(来自http://www.w3schools.com/jsref/jsref_parseInt.asp):

如果省略基数参数,JavaScript 将假定以下内容:

如果字符串以“0x”开头,则基数为 16(十六进制) 如果字符串以“0”开头,则基数为 8(八进制)。此功能已弃用如果字符串以任何其他值开头,则基数为 10(十进制)


Geo*_*ins 5

Radix是计算系统的基础.有无数的数字系统,但大多数人都熟悉的数字系统是基数10(十进制)和基数2(二进制).

数值可以在不同的基础上以不同的方式解释.例如,二进制数字10可以用十进制表示为2.

在这种情况下parseInt(),基数允许您指定要使用的基数.默认情况下,使用10的基数.

但是,即使使用基数10,也应始终指定基数.考虑的情况

parseInt("010") //返回8

乍一看,您可能希望该语句返回10.显式使用基数将有助于避免混淆:

parseInt("010", 10) //返回:10