JavaScript数值转换
2017-04-09 19:33
190 查看
有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
一、转型函数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数值转换总结
- 909422229__JavaScript数值转换的三种方式总结
- JavaScript 将字符串转换成数值(整数or浮点数)收藏
- javascript的非数值转换为数值和NaN
- JavaScript 将字符串转换成数值(整数or浮点数)收藏
- javascript高级程序设计之数值转换
- JavaScript数值转换总结
- JavaScript探秘:用parseInt()进行数值转换
- 关于javascript 一些有用的数值转换常量和方法
- Javascript中带进制的数值和字符串间的转换
- JavaScript数值与字符串类型转换的三种函数
- Javascript数值转换(string,int,json)