首页 > 代码库 > Number()、parseInt()、parseFloat()的区别

Number()、parseInt()、parseFloat()的区别

1、用途

  • Number():即转型函数,可用于任何数据类型,在转换字符串时复杂且不够合理;
  • parseInt():用于将字符串转换成数值,常用于处理整数;
  • parseFloat():用于将字符串转换成数值,常用于处理浮点数。

2、规则

  • Number():
    1 var num1 = Number(true); //1  Boolean值,true返回1,false返回0;
    2 var num2 = Number(123); //123  数字值,返回该数字值;
    3 var num3 = Number(null); //0  null值,返回0
    4 var num4 = Number(undefined); //NaN  undefined,返回NaN;
    5 var num5 = Number(‘-01.23‘); //-1.23  只包含数字的字符串,返回忽略前导的0的数字值;
    6 var num6 = Number(‘0xA‘); //10  有效的十六进制字符串,返回十进制数字值;
    7 var num7 = Number(‘‘); //0  空字符串,返回0;
    8 var num8 = Number(‘abc‘); //NaN  除上述格式之外的字符串,返回NaN;
    9 var num9 = Number({}); //NaN  对象,调用valueOf()按以上规则转换返回,若返回NaN,调用toString()再按以上规则转换返回.
  • parseInt():
    1 var num1 = parseInt(‘  abc123‘); //NaN  忽略字符串前空格,若第一个非空格字符不为数字字符或负号,返回NaN;
    2 var num2 = parseInt(""); // NaN  空字符串,返回NaN;
    3 var num3 = parseInt("  -123abc"); // -123  忽略“a”及其后续字符,返回-123;
    4 var num4 = parseInt(22.5); // 22  忽略“.”及其后续字符,返回22;
    5 var num5 = parseInt("0xA"); // 10  以0x开头且后跟数字字符,返回十六进制整数;
    6 //ECMAScript 3 返回56(八进制)、ECMAScript 5 返回70(十进制)
    7 var num6 = parseInt("070"); // 56  以0开头且后跟数字字符,返回八进制整数;
    8 var num7 = parseInt("70"); // 70  非0开头且后跟数字字符,返回十进制整数;

    在ECMAScript 5 JavaScript引擎中,parseInt()已经不具备解析八进制的能力,因此前导的0会被认为无效,结果返回十进制的整数。为了消除使用parseInt()可能导致上述的困惑,可以为parseInt()提供第二个参数,明确指出转换时使用的基数(即多少进制):

    1 var num1 = parseInt(‘A‘,16); //10  按十六进制转换;
    2 var num2 = parseInt(‘A‘); //NaN  按默认的十进制转换;
    3 var num3 = parseInt("10", 2); //2  按二进制转换;
    4 var num4 = parseInt("10", 8); //8  按八进制转换;
    5 var num5 = parseInt("10", 10); //10  按十进制转换;
    6 var num6 = parseInt("10", 16); //16  按十六进制转换;
  • parseFloat():
    1 var num1 = parseFloat("1234blue"); //1234
    2 var num2 = parseFloat("0xA"); //0  十六进制格式的字符串将转换为0
    3 var num3 = parseFloat("22.5"); //22.5
    4 var num4 = parseFloat("22.34.5"); //22.34  第一个小数点有效
    5 var num5 = parseFloat("0908.5"); //908.5  始终忽略前导的0
    6 var num6 = parseFloat("3.125e7"); //31250000
    7 var num7 = parseFloat("3.0000"); //3  小数点后全是0则返回整数

     

 

Number()、parseInt()、parseFloat()的区别