JavaScript数值转换
来源:互联网 发布:matlab数组求和函数 编辑:程序博客网 时间:2024/06/15 14:33
有3个函数可以把非数值转换成数值:Number()、parseInt()、parseFloat(),第一个函数即转型函数Number()可以用于任何数据类型,而另两个函数专门用于把字符串转换成数值,这三个函数对于同样的输入会有不同的结果。
一、转型函数Number(),转换规则如下
1、如果是Boolean值,true和false将分别被转换为1和0
2、如果是数字值,只是简单的传入和返回。
3、如果是null值,返回0。
4、如果是undefined,返回NaN。
5、如果是字符串,遵循以下规则:
如果字符串中只包含数字,则将其转换为十进制数值,即"123"会变成123,"1"会变成1,而"011"会变成11(注意:前面的0被忽略了);
如果字符串中包含有效的浮点数,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导0);
如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值。
如果字符串是空的,则将其转换为0。
如果字符串中包含除上述格式之外的字符,则将其转换为NaN。
6、如果是对象,则调用对象的valueOf()方法,然后按照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再次按照前面的规则转换返回的字符串值。
下面给出几个具体例子:
var num1 = Number('Hello world!'); //NaN
var num2 = Number(''); //0
var num3 = Number('000011'); //11
var num4 = Number(true); //1
二、parseInt()函数
由于Number函数处理字符串复杂且不合理,因此处理整数更常用parseInt()函数,parseInt()函数在转换字符串时,更多的看其是否符合数值模式,它会忽略字符串前面的空格,直至找到第一个非空格字符。
1、如果第一个字符不是数字,也不是负号,parseInt()就会返回NaN,也就是说,用parseInt()转换空字符串也会返回NaN(Number对空字符串返回0)
2、如果第一个字符是数字,parseInt()会继续解析后面的,直至解析完所有或者遇到了一个非数字字符才停止。例如"1234blue"会被转换成1234,"blue"会被忽略,类似的,"22.5"会被转换成22,因为小数点是非数字字符。
parseInt()也能识别出各种格式的整数如八进制和十六进制,也就是说,如果字符串以"0x"或"0"开头且后跟数字字符,会将其看作十六进制整数或八进制整数,返回的结果是十进制整数。
下面是一些例子:
var num1 = parseInt('1234blue'); //1234
var num2 = parseInt(''); //NaN
var num3 = parseInt('0xA'); //10
var num4 = parseInt('22.5'); //22
var num5 = parseInt("070"); //70
//在ES3中输出结果为56,但在ES5中parseInt()已不具备解析八进制的能力,因此前导的0会被认为无效,从而得到70
//为了消除这个困惑,parseInt()有第二个参数,可指定基数(即多少进制)
var num5 = parseInt("070", 8); //56
var num6 = parseInt('70'); //70
var num7 = parseInt('0xf'); //15
我们要明确指定基数,多数情况下,我们解析的都是十进制数值,因此始终将10作为第二个参数是必要的。
三、parseFloat()函数
类似,parseFloat()也是从头到尾解析,直至遇到无效的字符为止,也就是说,字符串中第一个小数点是有效的,而第二个小数点就无效了,因此它后面的字符串也将被忽略,例如"22.34.5"将会被转换为22.34
1、parseFloat()只能解析十进制数值,它没有第二个参数的用法
2、它也始终都会忽略前导0,所以十六进制字符串始终会被转换为0
3、如果字符串包含的是可解析为整数的数(即没有小数点,或小数点后都是0),parseFloat()会返回整数
如下是几个例子:
var num1 = parseFloat('1234blue'); //1234(整数)
var num3 = parseFloat('0xA'); //0
var num4 = parseFloat('22.5'); //22.5
var num5 = parseFloat("22.35.6"); //22.35
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat('3.125e7'); //31250000
- JavaScript 数值转换
- Javascript 中的数值转换
- JavaScript数值转换总结
- javascript数值转换
- JavaScript数值转换
- javaScript数值转换
- JavaScript中的数值转换函数
- javascript 数值与字符传相互转换
- javascript高级程序设计之数值转换
- 【JavaScript】parseInt() 数值转换的注意地方
- 数值转换
- 数值转换
- 数值转换
- 数值转换
- 数值转换
- 数值转换
- 数值转换
- 数值转换
- Activity ——(SharedPreferences)用户登录记住密码
- 5:从字符串中取数
- 【Java之IO】8.PrintIO
- JavaSE 对象流
- debian 安装时硬件驱动缺失怎么办?
- JavaScript数值转换
- java
- Android登录界面用SharedPreferences实现记住密码功能
- 0409
- JS函数式编程基础(FP)
- thinkphp3.2 管理员增删改查,批量删除
- fork()、vfork()、clone()和exec()
- 数学(1) 均值,方差,标准差,协方差
- 安装完MySQL数据库,在服务列表里找不到MySQL的解决办法