20

Possible Duplicate:
Behavior difference between parseInt() and parseFloat()

var box  = $('.box'),
fontSize = parseInt(box.css('font-size'), 10) + 5;

 $('button').on('click', function() {
  box.animate({fontSize: fontSize});
});

//..

 var box  = $('.box'),
 fontSize = parseFloat(box.css('font-size'), 10) + 5;

  $('button').on('click', function() {
    box.animate({fontSize: fontSize})
});

what the difference between..

**fontSize = parseInt(box.css('font-size'), 10);**

**fontSize = parseFloat(box.css('font-size'), 10);**

and and why should put 10 as a context..Please Help?

4

2 回答 2

53

JavaScript 提供了两种将非数字原语转换为数字的方法: parseInt() 和 parseFloat() 。您可能已经猜到了,前者将值转换为整数,而后者将值转换为浮点数。

字符串中包含的任何数字文字也被正确转换,因此字符串 "0xA" 被正确转换为数字 10。但是,字符串 "22.5" 将转换为 22 ,因为小数点对于整数来说是无效字符. 一些例子:

var iNum1 = parseInt("1234blue"); //返回 1234

var iNum2 = parseInt("0xA"); //返回10

var iNum3 = parseInt("22.5"); //返回22

var iNum4 = parseInt("蓝色"); //返回NaN

parseInt() 方法还具有基数模式,允许您将二进制、八进制、十六进制或任何其他基数的字符串转换为整数。基数被指定为 parseInt() 的第二个参数,因此解析十六进制值的调用如下所示:

var iNum1 = parseInt("AF", 16); //返回 175

当然,也可以对二进制、八进制甚至十进制(这是默认模式)执行此操作:

var iNum1 = parseInt("10", 2); //返回2

var iNum2 = parseInt("10", 8); //返回 8

var iNum2 = parseInt("10", 10); //返回10

如果十进制数字包含前导零,最好将基数指定为 10,这样您就不会意外地得到八进制值。例如:

var iNum1 = parseInt("010"); //返回 8

var iNum2 = parseInt("010", 8); //返回 8

var iNum3 = parseInt("010", 10); //返回10

在这段代码中,两行都将字符串“010”解析为一个数字。第一行认为该字符串是一个八进制值,并以与第二行相同的方式解析它(将基数指定为 8)。最后一行指定基数为 10,因此 iNum3 最终等于 10。

使用 parseFloat() 时的另一个区别是字符串必须以十进制形式表示浮点数,而不是八进制或十六进制。此方法忽略前导零,因此八进制数 0908 将被解析为 908 ,十六进制数 0xA 将返回 NaN 因为 x 不是浮点数的有效字符。parseFloat() 也没有基数模式。

使用 parseFloat() 的一些示例:

var fNum1 = parseFloat("1234blue"); //返回 1234

var fNum2 = parseFloat("0xA"); //返回0

var fNum3 = parseFloat("22.5"); //返回 22.5

var fNum4 = parseFloat("22.34.5"); //返回 22.34

var fNum5 = parseFloat("0908"); //返回 908

var fNum6 = parseFloat("蓝色"); //返回NaN

阅读更多阅读更多

类似问题在这里阅读更多

于 2012-10-10T06:12:57.917 回答
10

首先只parseInt接受第二个参数。它被称为基数。它表示要使用的数字系统。例如,您可以将数字转换为二进制或十六进制代码。

parseFloat只接受一个论点。

于 2012-10-10T06:02:28.350 回答