JavaScript数值转换函数

有3个函数可以把 非数值转换为数值:Number(),parseInt()和parseFloat()。Number()函数可以用于任何数据类型,另两个函数专门用于把字符串转换成数值。

1.Number()

转换规则:

  • 如果是Boolean值,true和false分别被转换为1和0;
  • 如果是数值,只是简单的传入和返回;
  • 如果是null值,返回0;
  • 如果是undefined,返回NaN;
  • 如果是字符串,遵守以下规则:
  1. 如果字符串中只含数字(包括前面带正负号的情况),则将其转换为十进制数值,即“1”变为1,“011”变为11;
  2. 如果字符串中包含有效的浮点格式,如“1.1”,则将其转换为对应的浮点数值;
  3. 如果字符串中包含有效的十六进制格式,例如“0xf”,则将其转换为相同大小的十进制整数值;
  4. 如果字符串是空的(不包含任何数值),则将其转换为0;
  5. 如果字符串包含除上述格式之外的字符,则将其转换为NaN.
  • 如果是对象,调用对象的valueOf()方法,然后按照上述规则转换。如果转换的结果是NaN,则调用对象的toString()方法,然后按照上述规则转换。

例如:

var num1=Number("hello world!");    //NaN
var num2=Number("");                //0
var num3=Number("000011");          //11
var num4=Number(true);              //1

2.praseInt()

praseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字符号或者负号,praseInt()会返回NaN。如果第一个字符是数字字符,praseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。例如,“22.2”会被转换为22,因为小数点并不是有效的数字字符。

例如:

var num1-parseInt("1234aa12");  //1234
var num1-parseInt("");          //NaN
var num1-parseInt("0xA");  //10
var num1-parseInt(22.2);  //22
var num1-parseInt("070");  //56
var num1-parseInt("70");  //70
var num1-parseInt("0XF");  //15

"070"在ECMAScript 3 JavaScript引擎中,被当成八进制字面量,而在ECMAScript 5 JavaScript引擎中,前边的0被当作无效,从而转换为70。因此,parseInt()提供第二个参数:转换时使用的基数。例如:

var num=parseInt("0xAF",16);   //175
var num1=parseInt("10",2);  //2
var num1=parseInt("10",8);  //8
var num1=parseInt("10",10);  //10
var num1=parseInt("10",16);  //16

3.parseFloat()

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

var num1=parseFloat("1234a12");  //1234
var num1=parseFloat("0xA");      //0
var num1=parseFloat("22.2");     //22.2
var num1=parseFloat("22.34.5");  //22.34
var num1=parseFloat("0908.5");   //908.5
var num1=parseFloat("3.125e7");  //31250000

猜你喜欢

转载自blog.csdn.net/weixin_42383753/article/details/82189389