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

Iam*_*nal 13 javascript jquery function font-size

可能重复:
parseInt()和parseFloat()之间的行为差​​异

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

 $('button').on('click', function() {
  box.animate({fontSize: fontSize});
});
Run Code Online (Sandbox Code Playgroud)

// ..

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

  $('button').on('click', function() {
    box.animate({fontSize: fontSize})
});
Run Code Online (Sandbox Code Playgroud)

有什么区别..

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

**fontSize = parseFloat(box.css('font-size'), 10);**
Run Code Online (Sandbox Code Playgroud)

并且为什么要将10作为上下文...请帮助?

Tec*_*hie 43

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

阅读更多, 阅读更多

类似问题在这里阅读更多

  • parseFloat("是0xA"); 不会返回NaN,至少在我的测试中.它返回0,因为它解析0并停在x处. (4认同)
  • 很好的答案.一个请求.你写了"var fNum1 = parseFloat("1234blue"); //返回1234.0".但现实是javascript中的1234.0 == 1234,因为只有一种数字类型.通过为parseFloat结果写1234.0和为parseInt结果写1234,你暗示两个结果之间存在差异,而实际上没有. (3认同)

Ark*_*ski 8

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

parseFloat 只接受一个参数.