为什么我们需要使用基数?
基数究竟是什么意思? 我们为什么需要它?
parseInt(10, radixValue);
你可能并不总是想把这个整数parsing成一个基数为10的数字,所以提供基数可以让你指定其他数字系统。
基数是单个数字的值的数量。 hex将是16.八进制将是8,二进制将是2,依此类推…
在parseInt()
函数中,你可以做几件事来提示基数而不提供它。 如果用户input的string与其中一个规则相匹配,但是没有明确的含义,那么这些字符也可能会对您有用。 例如:
// 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);
因为如果你有一个像0700
这样的string,并且希望输出是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
注意我只回答了你的问题的一半。 看看其他人对于基数究竟是什么的好的定义。
基数是数字系统的基数: http : //en.wikipedia.org/wiki/Radix
通常情况下,只需要指定基数,如果你想不同于10.更具体的(来自http://www.w3schools.com/jsref/jsref_parseInt.asp ):
如果省略了radix参数,那么JavaScript假定如下:
如果string以“0x”开头,则基数为16(hex)如果string以“0”开始,则基数为8(八进制)。 此function已弃用如果string以任何其他值开头,则基数为10(十进制)
基数是计数系统的基础。 有数量无限的数字系统,但大多数人所熟悉的是10(十进制)和2(二进制)。
数字值在不同的基础上可以有不同的解释。 例如,二进制中的数字10可以用十进制表示为2。
在parseInt()
的情况下,基数允许你指定要使用的基数。 默认情况下,使用10的基数。
但是,基数应该总是被指定,即使在使用基数10的情况下也是如此
parseInt("010")
//返回8
乍一看,你可能会期望这个语句返回10.显式使用基数将有助于避免混淆:
parseInt("010", 10)
//返回:10
radix参数用于指定要使用的数字系统,例如16(hex)的基数表示string中的数字应该从hex数字parsing为十进制数字。
如果省略了radix参数,那么JavaScript假定如下:
如果string以“0x”开始,则基数为16(hex)
如果string以“0”开始,则基数为8(八进制)。 此function已被弃用
如果string以任何其他值开始,则基数为10(十进制)
来源W3Schools
只需添加一些明确回答问题的附加信息即可:
如果基数未定义或0(或不存在),JavaScript假定如下:
- […]
- 如果inputstring以“0”开始,则基数为八(八进制)或十(十进制)。 究竟select哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有的浏览器都支持这一点。 出于这个原因,当使用parseInt时总是指定一个基数。
- […]
来源: MDN parseInt()