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

时间:2011-07-07 14:00:46

标签: javascript

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

parseInt(10, radixValue); 

9 个答案:

答案 0 :(得分:77)

您可能并不总是想要将整数解析为基数为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);

答案 1 :(得分:22)

因为如果您有一个像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

注意我只回答了你问题的一半。有关基数的实际定义,请参阅其他内容。

答案 2 :(得分:5)

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

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

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

但是,即使使用基数10,也应始终指定基数。考虑

的情况

parseInt("010") //返回8

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

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

答案 3 :(得分:3)

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

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

  

如果省略radix参数,   JavaScript假设如下:

     

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

答案 4 :(得分:2)

只需添加一些明确回答问题的其他信息:

如果radix未定义或0(或不存在),则JavaScript假定以下内容:

  • [...]
  • 如果输入字符串以“0”开头,则基数为八(八进制)或十进制(十进制)。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。因此,在使用parseInt时始终指定基数。
  • [...]

来源:MDN parseInt()

答案 5 :(得分:2)

这只是我的看法,但是“我们需要使用基数”的想法很快就过时了。这个问题确实是前一段时间才真正存在的,因为IT界以外的人通常不使用除十进制之外的数字符号,并且经常会提供十进制的十进制数字,例如“ 010”。但是由于JS中ECMAScript 6八进制数字的前缀是“ 0o”,而不仅仅是ECMAScript 5和3的前缀是“ 0”。因此,如果您不针对IE系列(现在并不常见),则可以跳过基数安全地

答案 6 :(得分:1)

paseInt()中的基数是什么?

parseInt()函数解析一个字符串并返回一个整数。它使用 radix 的第二个参数,该指定字符串中数字的基数基数可以是236之间的整数。

函数调用看起来像(语法):

parseInt(string, radix);

一些示例来阐明基数

的概念

示例1:

var a = parseInt("11", 2);

radix 变量表示“ 11”在 二进制系统或以2为底的 中。因此,此示例将字符串“ 11”转换为整数3。

示例2:

var a = parseInt("10011", 16);

基数告诉parseInt() 10011是一个十六进制数,因此,将其转换为整数{{1} }

基本上来说,长话短说,基数参数告诉65553作为第一个参数传递的字符串是特定系统(二进制,十六进制等)的字符串,需要对其进行转换成一个整数作为最终产品。

答案 7 :(得分:1)

在 2011 年使用 parseInt 时,我学到了总是需要提供基数的艰难方法。但在现代浏览器中,他们似乎“修复”了它。

如果你在一个以 0 开头的字符串上运行一个函数,它会用基数 10 来解析它。但是如果你出于某种原因在一个数字上运行它,那么它仍然会使用基数 8,如{{3}中提到的}.

console.log(parseInt('015'));
// This returns 15

console.log(parseInt(015));
// This returns 13

答案 8 :(得分:0)

  

radix参数用于指定   要使用哪个数字系统   例如,16的基数(十六进制)   表示中的数字   字符串应该从a解析   十六进制数到小数   号。

     

如果省略radix参数,   JavaScript假设如下:

     

如果字符串以“0x”开头,则为   基数为16(十六进制)

     

如果字符串以“0”开头,则为   基数为8(八进制)。这个功能是   弃用

     

如果字符串以任何其他字符串开头   值,基数为10(十进制)

来源W3Schools