parseInt() 和 parseFloat() 之间的区别 [重复]

Posted

技术标签:

【中文标题】parseInt() 和 parseFloat() 之间的区别 [重复]【英文标题】:difference between parseInt() and parseFloat() [duplicate] 【发布时间】:2012-09-30 13:00:09 【问题描述】:

可能重复: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 作为上下文..请帮忙?

【问题讨论】:

看看这个问题***.com/questions/9528433/… 还有这个developer.mozilla.org/en-US/docs/javascript/Guide/… 【参考方案1】:

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 More, Read More

Similar Question Read more here

【讨论】:

不错的答案。一请求。你写了“var fNum1 = parseFloat(“1234blue”); //returns 1234.0”。但现实情况是 1234.0 == 1234 在 javascript 中,因为只有一种数字类型。通过为 parseFloat 结果写 1234.0 和为 parseInt 结果写 1234 你暗示这两个结果之间存在差异,而实际上没有。 parseFloat(“0xA”);至少在我的测试中不返回 NaN。它返回 0,因为它解析 0 并在 x 处停止。【参考方案2】:

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

parseFloat 只接受一个参数。

【讨论】:

以上是关于parseInt() 和 parseFloat() 之间的区别 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

详解JS中Number()parseInt()和parseFloat()的区别

js parseFloat 与 parseInt 处理字符串

Number()parseInt()和parseFloat()的注意点

Java parseInt()和parseFloat()的用法

Java parseInt()和parseFloat()的用法

parseInt 与 parseFloat 解析