parseInt()和parseFloat()之间的区别

时间:2012-10-10 05:59:18

标签: javascript jquery function font-size

  

可能重复:
  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})
});

有什么区别..

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

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

以及为什么要将10作为上下文...请帮助?

2 个答案:

答案 0 :(得分:41)

  

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(" blue"); //返回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(" blue"); //返回NaN

Read MoreRead More

Similar Question Read more here

答案 1 :(得分:8)

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

parseFloat只接受一个参数。