好!欢迎访问迷津渡口 现在时间是:

迷津渡口

越感到迷惑 越接近真理

javascript加法和文本转换成数字详解

javascript加法可以是数字相加:

1 + 2 = 3

也可以是文本相加:

"1" + "2" = "12"

如果文本和数字相加,必定变成文本相加:

1 + "2" = "1" + "2" = "12"

Javascript会根据上下文进行相对应的加法计算,但需要计算的是数字,现在还是文本怎么做呢?


一般把文本转换成数字有三种方法:

函数转换强制类型转换弱类型自动转换


函数转换

javascript提供了parseInt()和parseFloat()两个函数将文本转换为数字。

parseInt(string,[base]):将文本转换成整型数字

常用两个参数,一个是文本参数,一个是可选参数:基参数,一般默认是十进制。

如果文本参数包含进制前缀,可省略后面的参数,但设置后面的参数可覆盖前面的前缀:

二进制前缀:0b

八进制前缀:0  

十进制前缀:0d(一般省略)

十六进制前缀:0x


// 默认十进制
parseInt("1234");       // returns 1234
parseInt("1234blue");   // returns 1234
parseInt("22.5");       // returns 22
// 前缀
parseInt("0xA");        // returns 10
parseInt("010");        // returns 8
// 参数
parseInt("AF", 16);     // returns 175
parseInt("10", 2);      // returns 2
parseInt("10", 8);      // returns 8
parseInt("10", 10);     // returns 10
// 包含前缀0但使用参数
parseInt("010");        // returns 8
parseInt("010", 8);     // returns 8
parseInt("010", 10);    // returns 10
// 第一个字符不是数字,转换失败
parseInt("blue168");    // returns NaN

parseFloat(string):将文本转换成浮点类型数字

只有十进制的模式,不能选择其他进制,也不能用前缀使用其他进制。

// 默认十进制
parseFloat("1234blue"); // returns 1234.0
parseFloat("22.5");     // returns 22.5
parseFloat("22.34.5");  // returns 22.34
// 前缀不生效,只能十进制
parseFloat("0908");     // returns 908.0
parseFloat("0xA");      // returns 0.0
// 第一个字符不是数字,转换失败
parseFloat("blue168");  // returns NaN

注意:

文本转成数字时只能取从第一个字符开始为数字,直到不是数字为止的一段。

因此,第一个字符如果不是数字,则转换不能成功,将返回NaN,转换失败。


强制类型转换

强制类型转换可将其他类型的数据强制转换成需要的类型,将文本转换成数字:Number(string)。

强制类型转换转换的是整个文本而不是部分文本,因此文本不是正确数字则返回NaN:

// 前面几个其实不算字符串,也列出来好了,注意不含双引号""
Number(false);           // returns 0
Number(true);            // returns 1         
Number(undefined);       // returns NaN
Number(null);            // returns 0
// 文本为正确数字
Number("5.5");           // returns 5.5
Number("56");            // returns 56
// 文本虽然包含数字但不是正确数字
Number("5.6.7");         // returns NaN


弱类型自动转换

弱类型自动转换是利用js会根据上下文自动转换变量,例如字符串变量没有乘法运算,当字符串变量和数字相乘时会自动转换成数字变量,看下例。但这种方法不推荐,不可控。

var x="12.123";          // x是文本变量"12.123"
var x=x*1;               // x是数字变量12.123
var x=x+1;               // x是数字变量13.123


终于写完了,小指指头都写累了,如果本文对你有用,欢迎转载,记得点赞哦~

点赞1
   支持一下
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
 点赞
 签到
 表情
 图片
 代码
提交评论

清空信息
关闭评论
 00:00/00:00
我想和你虚度时光 - 花房姑娘(9)
  1. 恋恋风尘
  2. 恋恋风尘
  3. 恋恋风尘
  4. 恋恋风尘
  5. 恋恋风尘
  6. 恋恋风尘
  7. 恋恋风尘
  8. 恋恋风尘
  9. 恋恋风尘