javascript将非数值转换为数值


Posted in Javascript onSeptember 13, 2018

以下三个函数将非数值转换为数值:Number() 、parseInt()和 parseFloat()

Number()的转换规则

1.Boolean值 true会被转换为1 false会被转换为0

var correct = true
Number(correct)
1
var error = false
Number(error)
0

2.数字值 传入什么返回什么

var sales = 10
Number(sales)
10

3.null 值,返回 0

var arg = null
Number(arg)
0

4.undefined,返回 NaN

var vara = undefined
Number(vara)
NaN

5.字符串,遵循下列规则:

如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"

会变成 1,"123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了)

var str = '1'
Number(str)
1
var str1 = '011'
Number(str1)
11
var str2 = '+1'
Number(str2)
1
var str3 = '-001'
Number(str3)
-1
var str4 = '-121'
Number(str4)
-121

如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽
略前导零)

var str = '1.1'
Number(str)
1.1
var str1 = '+1.1'
Number(str1)
1.1
var str2 = '-01.1'
Number(str2)
-1.1

如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值

如果字符串是空的(不包含任何字符),则将其转换为 0

var str = ''
Number(str)
0

如果字符串中包含除上述格式之外的字符,则将其转换为 NaN

var str = 'adfsfdsa'
Number(str)
NaN

6.如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符串值

parseInt()转换规则

由于 Number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是
parseInt()函数。parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字
符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符,parseInt()
就会返回 NaN;也就是说,用 parseInt()转换空字符串会返回 NaN(Number()对空字符返回 0)。如
果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了
一个非数字字符。例如,"1234blue"会被转换为 1234,因为"blue"会被完全忽略。类似地,"22.5"
会被转换为 22,因为小数点并不是有效的数字字符。

指定基数会影响到转换的输出结果。例如:

var num1 = parseInt("10", 2); //2 (按二进制解析)
var num2 = parseInt("10", 8); //8 (按八进制解析)
var num3 = parseInt("10", 10); //10 (按十进制解析)
var num4 = parseInt("10", 16); //16 (按十六进制解析)

**多数情况下,我们要解析的都是十进制数值,因此始终将 10 作为第二个参数是
非常必要的。**

parseFloat()转换规则

与 parseInt()函数类似,parseFloat()也是从第一个字符(位置 0)开始解析每个字符。而且
也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第
一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。举例来说,
"22.34.5"将会被转换为 22.34。

除了第一个小数点有效之外,parseFloat()与 parseInt()的第二个区别在于它始终都会忽略前导
的零。parseFloat()可以识别前面讨论过的所有浮点数值格式,也包括十进制整数格式。但十六进制格
式的字符串则始终会被转换成 0。由于 parseFloat()只解析十进制值,因此它没有用第二个参数指定基
数的用法。最后还要注意一点:如果字符串包含的是一个可解析为整数的数(没有小数点,或者小数点后
都是零),parseFloat()会返回整数。

var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0 
var num3 = parseFloat("22.5"); //22.5 
var num4 = parseFloat("22.34.5"); //22.34 
var num5 = parseFloat("0908.5"); //908.5 
var num6 = parseFloat("3.125e7"); //31250000

parseInt()不能转换浮点型数值,我们用parseFloat()来解决。

parseFloat()跟parseInt()差不多,同样会从第一个非空字符串开始解析,直到解析完毕,或者遇到非浮点型数值格式(区别一),但是它会忽略前面所有的0,他没有转换基数,只解析十进制的值(区别二)

console.log(parseFloat(' 123hehe'));//输出123;
console.log(parseFloat('123hehe'));//输出123;
console.log(parseFloat('01.2.3'));//输出1.2;
console.log(parseFloat('0xa'));//输出0

注意,如果字符串可以解析为整数,则小数点后面的0不会输出

console.log(parseFloat('1.000'));//输出1;

总结

以上所述是小编给大家介绍的javascript将非数值转换为数值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
JavaScript中使用concat()方法拼接字符串的教程
Jun 06 Javascript
JavaScript事件学习小结(一)事件流
Jun 09 Javascript
如何用js实现鼠标向上滚动时浮动导航
Jul 18 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
关于vue.js弹窗组件的知识点总结
Sep 11 Javascript
EasyUI学习之Combobox级联下拉列表(2)
Dec 29 Javascript
Bootstrap table 定制提示语的加载过程
Feb 20 Javascript
JS 组件系列之BootstrapTable的treegrid功能
Jun 16 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
Mar 08 Javascript
使用Jenkins部署React项目的方法步骤
Mar 11 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 #Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 #Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 #Javascript
详解react内联样式使用webpack将px转rem
Sep 13 #Javascript
详解webpack 热更新优化
Sep 13 #Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 #Javascript
Angularjs之ngModel中的值验证绑定方法
Sep 13 #Javascript
You might like
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
原生js实现验证码功能
2017/03/16 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python抓取网页中的图片示例
2014/02/28 Python
python实现文件分组复制到不同目录的例子
2014/06/04 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
Python简单实现区域生长方式
2020/01/16 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
keras的三种模型实现与区别说明
2020/07/03 Python
Python 在函数上添加包装器
2020/07/28 Python
佳能英国官方网站:Canon UK
2017/08/08 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
求职自荐信范文格式
2013/11/29 职场文书
人民调解员培训方案
2014/06/05 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫
nginx配置指令之server_name的具体使用
2022/08/14 Servers