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 相关文章推荐
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
Feb 14 Javascript
IE8下关于querySelectorAll()的问题
May 13 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
JS案例分享之金额小写转大写
May 15 Javascript
jquery插件splitScren实现页面分屏切换模板特效
Jun 16 Javascript
JS+CSS实现网页加载中的动画效果
Oct 27 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 Javascript
使用webpack搭建vue项目实现脚手架功能
Mar 15 Javascript
用原生 JS 实现 innerHTML 功能实例详解
Apr 03 Javascript
了解JavaScript表单操作和表单域
May 27 Javascript
Vue实现回到顶部和底部动画效果
Jul 31 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上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php中函数前加&符号的作用分解
2014/07/08 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python md5与sha1加密算法用法分析
2017/07/14 Python
Python中类的初始化特殊方法
2017/12/01 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
Python中six模块基础用法
2019/12/08 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
六五普法规划实施方案
2014/03/21 职场文书
九华山导游词
2015/02/03 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
食堂管理制度范本
2015/08/04 职场文书
防溺水主题班会教案
2015/08/12 职场文书
升学宴学生致辞
2015/09/29 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
Redis+AOP+自定义注解实现限流
2022/06/28 Redis