zoukankan      html  css  js  c++  java
  • 关于parseInt函数的一切

    parseInt()

    作用是将参数(通常为字符串)强制转换为整数。

    它有两个参数,第二个可以省略,我们先展示常见的用法

    1. 转换规则:依次将字符串中从左到右的数字部分转为整数,一旦转换失败,返回NaN。

    (1) 参数是字符串类型:

    var a = parseInt(‘10’); //将字符串转成整数类型
    console.log(a); // 10
    
    var b = parrseInt(‘10true’); //将有效数字部分转为整数,提取开头数字部分
    console.log(b); // 10
    
    var c = parseInt(‘10true20’); //只将开头有效部分转为整数
    console.log(c); //10
    
    var d = parseInt(‘045zoo’); //开头部分转为整数,数字前面的0省略
    console.log(d); //45
    
    var f = parseInt(‘34.5’); //整数部分,小数点非数字部分,舍去
    console.log(f); //34
    
    var g = parseInt(‘a3’); //若不是以数字开头,转为NaN(Not a Number 不是数字)的特殊数值
    console.log(g); //NaN

    (2) 参数是数字类型:

    var a = parseInt(3.4); //依然转为数字,但是取整
    console.log(a); //3

    (3) 其它数据类型:只要开头不包含有效数字,结果都转为NaN

    var a = parseInt(true);
     console.log(a); //NaN
     
     var b = parseInt(null);
     console.log(b); //NaN
     
     var c = parseInt(undefined);
     console.log(c); //NaN
    
     var d = parseInt([]);
     console.log(d); //NaN
    
     var e = parseInt({});
     console.log(e); //NaN

    接下来,我们看第二个参数的用法

    第二个参数:表示进制,范围2~36(用来说明第一个参数的进制规则)
    var a = parseInt(‘99’,10); // 如果字符串为十进制内容,该参数可省略
     console.log(a); // 99
     
     var a = parseInt(‘1001’,2); // ‘1001’ 符合二进制规则, 转为十进制整数
     console.log(a); // 9
    
     var a = parseInt(‘1001’,10); // ‘1001’同样符合十进制, 转为十进制整数
     console.log(a); // 1001
    
     var b = parseInt(‘234’,2); //‘234’不符合二进制的规则
     console.log(b); // NaN
    
     var b = parseInt(‘abcde’,2); //‘abcde’不符合二进制的规则
     console.log(b); // NaN
    
     var c = parseInt(‘1022’,2); //‘10’部分属于二进制,但‘22’不是,将开头有效的部分提取并转成十进制
     console.log(c); //2

    一些特殊说明

    如果以0x或0X开头,即使不说明进制规则,也能识别
    var e = parrseInt(‘0xa’); //0x是十六进制的表示方法,a是十六进制中的10,转换成整数后自动切换为十进制
    console.log(e); //10

    尽量不使用出现e的数字,由于只能识别开头部分,会造成结果混乱
    此时应使用parseFloat方法替代

    parseInt("6.022e23", 10);        // 返回 6
    parseInt(6.022e2, 10);          // 返回 602

    非常大或非常小的数字

    parseInt(4.7 * 1e22, 10); // 非常大的数值变成 4
    parseInt(0.00000000000434, 10); // 非常小的数值变成 4

    在最新的ES5规范中,以0开头的数字,已经不能再被识别为八进制了。

    parseInt("011");  //会当成10进制转换为   11
    parseInt("011", 8)   //指定了8进制,结果为  9

    总结:

    以上测试均来自最新版的chrome浏览器,并不能确保所有浏览器行为一致。为了保证开发中不出现意外,建议使用parseInt方法时,一律带上第二个参数!
  • 相关阅读:
    数据可视化需要简化编程
    设计模式之工厂模式
    LinCode落单的数
    怎样安装解压版MySQL
    程序阅读:简单C++学生信息管理系统
    中缀式变后缀式
    jquery动态创建表格
    Android笔记——Activity中的回传数据案例(装备选择)
    A mail sent to Google chromium.org Groups for Help
    Eclipse导入MyEclipseproject(web项目显示为java项目解决的方法)
  • 原文地址:https://www.cnblogs.com/Kuoblog/p/12394277.html
Copyright © 2011-2022 走看看