可能重复:
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作为上下文...请帮助?
答案 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
答案 1 :(得分:8)
首先,只有parseInt
接受第二个参数。它被称为基数。它代表要使用的数字系统。例如,您可以将数字转换为二进制或十六进制代码。
parseFloat
只接受一个参数。