js字符串转数字

今天写代码的时候遇到一个问题,获取了一个span元素的值,但是+1的时候却出现了25+1=251的情况。原来是获取的值为字符串,所以对字符串进行了拼接。

我又翻了翻js高程,仔细看了看关于字符串,数字,布尔值的互相转换问题,这里先介绍字符串转数字。

js里有三种方法可以完成字符串转数字,分别是

  • Number()
  • parseInt()
  • parseFloat()

那么它们有什么区别呢?

  1. Number()
  • 如果字符串只包含数字,则将其转换为十进制数值,即 "123" 会变成 123
  • 如果字符串包含十六进制格式,例如 "0xf" ,则将其转换为相同大小的十进制整数值
  • 如果字符串为空,转换为 0
  • 如果是上述格式之外的字符,转换为 NaN
    例如
var num1 = Number("Hello world!");      //NaN
var num2 = Number("");                  //0
var num3 = Number("000011");            //NaN
  1. parseInt()
    由于Number()处理字符串比较复杂且不够合理,所以处理整数常用 parseInt()
    parseInt() 转换字符的时候,会识别字符是否符合数值模式,它会忽略字符串前面的空格,从第一个非空格字符开始解析,如果是非数字符号或正负号,则返回 NaN 。如果第一个非空字符是数字符号或正负号,那么会继续解析,直到解析完或遇到非数字符号,比如 1234blue 会被转换成 1234, 但是需要注意的是,小数点并不算是数字符号,所以 22.5 会被解析为 22。同时也能解析八进制或十六进制的数。
    例如
var num1 = parseInt("1234blue");      //1234
var num2 = parseInt("");              //NaN
var num3 = parseInt("22.5");          //22
var num4 = parseInt("070");           //56(八进制数)
var num5 = parseInt("0xf");           //15(十六进制数)

另外一点,由于 parseInt() 在解析八进制数字的时候,ECMAScript3和5存在分歧,所以 parseInt() 可以制定两个参数,即转换的进制,比如

var num1 = parseInt("AF", 16);      //175
var num2 = parseInt("AF");          //NaN
var num3 = parseInt("10", 2);       //2(按二进制解析)
var num4 = parseInt("10", 8);       //8(按八进制解析)
var num5 = parseInt("10", 10);      //10(按十进制解析)
var num6 = parseInt("10", 16);      //16(按十六进制解析)
  1. parseFloat()
    parseInt() 类似,也是从第一个字符开始解析,但是小数点是有效的,因为 parseFloat() 解析的不是数字符号,而是浮点数字字符,但第二个小数点就无效了。比如 "22.34.5" 会背转换为 22.34
    需要注意的是 parseFloat() 只能解析十进制的数字。
    例如
var num1 = parseFloat("1234blue");      //1234
var num2 = parseFloat("22.5");          //22.5
var num3 = parseFloat("22.34.5");       //22.34
var num4 = parseFloat("0xA");           //0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JS使用技巧专题 1开发技巧 1.1函数使用 1.1.1函数声明方式 JS函数的写法总结 http://blog....
    Kevin_Junbaozi阅读 1,110评论 0 11
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 834评论 0 0
  • 第三章 基本概念 3.1 语法 ECMAScript标识符一般采用驼峰大小写格式,也就是第一个字母小写,剩下的每个...
    小雄子阅读 585评论 0 1
  • 第三章 基本概念 本章基本内容 语法 数据类型 流控制语句 理解函数 (一)语法 区分大小写在JS里面变量,函数名...
    我拥抱着我的未来阅读 453评论 0 0
  • 亲爱的我决定给你写信,除你之外,我找不到任何可诉说而不引起厌倦的人。
    薄日阅读 114评论 1 1