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()的用法