parseInt()和parseFloat()之间的行为差异
Behavior difference between parseInt() and parseFloat()
为什么parseInt()
和parseFloat()
之间存在这种行为差异?
我有一个包含08
的字符串。
当我写这个代码时:
alert(hfrom[0]);
alert(parseInt(hfrom[0]));
alert(parseFloat(hfrom[0]));
生成以下输出:
08
0
8
为什么parseInt
和parseFloat
在这种情况下返回两个不同的结果?
parseInt()根据字符串中的第一个字符假定数字的基数。如果它以0x
开头,则假定基数为16(十六进制)。否则,如果它以0
开始,则假定基数为8(八进制)。否则,它假定基数为10。
您可以将基数指定为第二个参数:
alert(parseInt(hfrom[0], 10)); // 8
来自MDN(链接如上):
如果基数未定义或为0,JavaScript将假定以下内容:
如果输入字符串以"0x"或"0x"开头,则基数为16(十六进制)。如果输入字符串以"0"开头,则基数为8(八进制)。此功能是非标准的,并且某些实现故意不支持它(而是使用基数10)。为此reason在使用parseInt时总是指定基数。如果输入字符串以任何其他值开头,基数为10(十进制)。
您应该始终将基数参数与parseInt()
(不包括parseInt('013', 10)
)一起包含,否则它可以将其转换为不同的基数:
parseInt('013') === 11
parseInt('013', 10) === 13
parseInt('0x13') === 19
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- jquery在表单之间切换
- Nodejs API控制器,用于在API之间切换
- 如何在aspx页面之间传递参数
- 在索引.html和应用.js [node.js] 之间共享变量
- 什么是&&在没有if的行中的变量之间
- parseInt()和parseFloat()之间的行为差异
- 如何解决parseFloat("")和isNaN("")之间的不一致