关闭

Js将字符串转数字的方式

时间: 2020-12-19阅读: 237标签: 类型

js字符串转换数字方方式主要有三类:转换函数、强制类型转换、弱类型隐式类型转换,利用这三类转换的方式可以有5种转换的方法。


parseInt()

parseInt()和Number.parseInt()是最常用的转换字符串为整数数值的方法,其中Number.parseInt()是ES6之后为了减少全局方法的定义才增加的静态方法,实质与全局方法parseInt()相同,他们的规则如下:

  • 忽略字符串前面的空格,直至找到第一个非空字符。
  • 如果第一个非空字符不是数字或者是正负号则返回NaN。
  • 如果第一个是数字字符一直解析到一个非数字字符。
  • 如果第一个是数字字符,能识别出各种整数格式。
  • 接受第二个参数,即转换时使用的基数。
  • 小数向下取整。
console.log(Number.parseInt(true));        // NaN
console.log(Number.parseInt(false));       // NaN
console.log(Number.parseInt(null));        // NaN
console.log(Number.parseInt(undefined));   // NaN
console.log(Number.parseInt(NaN));         // NaN
console.log(Number.parseInt("   123"));    // 123
console.log(Number.parseInt(" ab123"));    // NaN
console.log(Number.parseInt(""));          // NaN
console.log(Number.parseInt(" 31avs"));    // 31
console.log(Number.parseInt("0xF"));       // 15
console.log(Number.parseInt("070"));       // es3->56 es5->70
console.log(Number.parseInt("A", 16));     // 10
console.log(Number.parseInt("A"));         // NaN
console.log(Number.parseInt("51.2"));      // 51
console.log(Number.parseInt("-51.2"));     // -51


parseFloat()

parseFloat()和Number.parseFloat()是最常用的转换字符串为浮点数数值的方法,其中Number.parseFloat()是ES6之后为了减少全局方法的定义才增加的静态方法,实质与全局方法parseFloat()相同,他们的转换规则如下:

  • 忽略字符串前面的空格,直至找到第一个非空字符。
  • 如果第一个非空字符不是数字或者是正负号则返回NaN。
  • 如果第一个是数字字符一直解析到一个非数字字符。
  • 字符串中第一个小数点是有效的第二个小数点是无效的。
  • 只解析10进制,不接受第二个参数。
console.log(Number.parseFloat(true));            // NaN
console.log(Number.parseFloat(false));           // NaN
console.log(Number.parseFloat(null));            // NaN
console.log(Number.parseFloat(undefined));       // NaN
console.log(Number.parseFloat(NaN));             // NaN
console.log(Number.parseFloat("123"));           // 123
console.log(Number.parseFloat("  123.1"));       // 123.1
console.log(Number.parseFloat("  ab123.1"));     // NaN
console.log(Number.parseFloat(""));              // NaN
console.log(Number.parseFloat("  123.3.4eqw"));  // 123.3
console.log(Number.parseFloat("0xF"));           // 0


Number()

Number()构造函数会返回一个字面量值,而使用new Number()则会返回一个数字对象,他们的转换规则如下:

  • 如果是Boolean值,true和false分别返回1或0。
  • 如果是数字,只是单纯的传入和返回。
  • 如果是null,则返回0。
  • 如果是undefined返回NaN。
  • 如果是字符串且字符串为空则返回零,忽略前导零。
  • 如果是字符串且字符串为整数则返回整数,忽略前导零。
  • 如果是字符串且字符串为浮点数则返回浮点数。
  • 如果是字符串且字符串为16进制,转为10进制返回。
  • 除以上格式返回NaN。
  • 如果是对象,则调用对象的valueOf,按照前面的规则返回值,如果返回NaN,再调用toString(),按照前面的规则返回值。
console.log(Number(true));        // 1
console.log(Number(false));       // 0
console.log(Number(null));        // 0
console.log(Number(undefined));   // NaN
console.log(Number(NaN));         // NaN
console.log(Number(""));          // 0
console.log(Number("123"));       // 123
console.log(Number("  123"));     // 123
console.log(Number("123.12"));    // 123.12
console.log(Number("0xF"));       // 15


位运算

位运算是直接对二进制位进行计算,它直接处理每一个比特位,是非常底层的运算,好处是速度极快,缺点是很不直观。位运算只对整数起作用,如果一个运算数不是整数,会自动转为整数后再运行。在JavaScript内部,很多时候数值都是以64位浮点数的形式储存,但是做位运算的时候,是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数。

console.log(~~(true));        // 1
console.log(~~(false));       // 0
console.log(~~(null));        // 0
console.log(~~(undefined));   // 0
console.log(~~(NaN));         // 0
console.log(~~(""));          // 0
console.log(~~("123"));       // 123
console.log(~~("  123"));     // 123
console.log(~~("123.12"));    // 123
console.log(~~("0xF"));       // 15


一元运算符

一元运算符可以将字符串进行隐式的类型转换,与其它的解析方式不同,如果是一个NaN值,那么返回的也是NaN,通常使用+操作符,因为这个方式不容易混淆。

console.log(+(true));        // 1
console.log(+(false));       // 0
console.log(+(null));        // 0
console.log(+(undefined));   // NaN
console.log(+(NaN));         // NaN
console.log(+(""));          // 0
console.log(+("123"));       // 123
console.log(+("  123"));     // 123
console.log(+("123.12"));    // 123
console.log(+("0xF"));       // 15
站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/9967

关闭

Js中=相等符号的隐形转换

ECMAScript提供两组操作符: 相等和不相等(先转换再比较),全等和不全等(仅比较而不转换);相等(==)和不相等(!=)这两个操作符都会先转换操作数(通常称为强制转型),然后再比较它们的相等性。

TypeScript never 类型

在类型理论(数学逻辑中的一种理论)中, 底部类型 是没有值的类型。也称为零或空类型,有时用 falsum(⊥)表示。 数学理论与计算机的发展是相辅相成的,底部类型在计算机科学中也有一定的应用场景。

理解 TypeScript 类型收窄

TypeScript 类型收窄就是从宽类型转换成窄类型的过程。类型收窄常用于处理联合类型变量的场景,一个常见的例子是非空检查:如果 el 为 null,则第一个分支中的代码将不会执行。因此,TypeScript 能够从此代码块内的联合类型中排除 null 类型

Js判断null、undefined与NaN的方法

typeof 返回的是字符串,有六种可能:number、string、boolean、object、function、undefined,如果把 NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符

TypeScript基础类型

为了让程序有价值,我们需要能够处理最简单的数据单元:数字,字符串,结构体,布尔值等。 TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。

js类型Number、Symbol、Object容易忽略的细节

Number 类型表示我们通常意义上的“数字”。这个数 字大致对应数学中的有理数,当然,在计算机中,我们有一定的精度限制。JavaScript 中的 Number 类型有 18437736874454810627(即 2^64-2^53+3) 个值。

JavaScript 基本数据类型和引用类型的区别详解

前两天看到kraaas大神的关于基本数据类型和引用类型的区别的文章觉得写得非常不错,就想着在其基础上加上自己平时看到的一些知识点和理解,所以就有了以下的文章

Android 与 JavaScript 交互 支持的数据类型

在Android混合开发中,WebView是中间件,承担着渲染网页的职责。当需要Android原生与H5之间交互的时候,需要调用WebView的getSettings().setJavaScriptEnabled(true);以及webView.addJavascriptInterface(Js对象名,Java对象);

js判断数据类型

ECMAScript 变量包含两种不同的数据类型的值:基本类型值和引用类型值 。 基本数据类型指的是简单的数据段,而引用数据类型指那些可能有多个值组成的对

JS简单数据类型

在计算机中,不同的数据所需占用的存储空间是不同的,为了便于吧数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!