javascript 字符转数字-javascript字符串(String)类型转数字(Number)类型的几种类型

2023-08-29 0 3,380 百度已收录

1. 转换功能

JS提供了两个转换函数,parseInt()和parseFloat()。 parseInt() 将值转换为整数,parseFloat 将值转换为浮点数。

只有在String类型上调用这两个函数才能正确运行; 所有其他类型都返回 NaN (NotaNumber)。

如下:

parseInt("0xA");//10parseInt("12.34");//12parseInt("12.3.5");//12parseInt("123darlang");//123parseInt("darlang");//NaNparseInt(" darlang123");//NaN

parseInt()方法还有一个基本模式,可以将二进制补码、八进制补码、十六进制补码等(2-36的补码)字符串转换为整数。 基数由 parseInt() 方法的第二个参数指定。

如下:

parseInt("16",8);//14(1*8^1+6*8^0)parseInt("10F",8);//8 "F 被击败" parseInt("10",2 ) ;//2(1*2^1+0*2^0) parseInt("darlang",16);//218=da "rlang 被打败" parseInt("10",10);//10

由于parseInt()的特点,它总是会从左到右取匹配的值。

例如,在8/10补码中,它会从左到右取数字的值,而字母是无效的。 如果没有匹配的值,则返回 NaN。 这就是为什么 10F 只返回值 10。

16补码时,从左到右取值编号和AF的值,其他字母无效,如果没有匹配到的值,则返回NaN。 这就是为什么darlang只返回da的值。 因为遇到r,识别时无效,所以停止寻找值,返回da的有效转换值,218。

另外值得注意的是,如果是10的补码,则0前面的数字可能会被意外转换为8的补码。

如下:

parseInt("10");//10parseInt("010");//8parseInt("010",8);//8parseInt("010",10);//10

parseFloat() 方法与 parseInt() 方法类似。 不同之处在于 parseFloat() 处理必须以十的补码表示浮点数的字符串,并且它没有基本模式。

拿第一个例子,替换成parseFloat,如下:

parseFloat("0xA");//0parseFloat("12.34");//12.34parseFloat("12.3.4");//12.3parseFloat("123darlang");//123parseFloat("darlang");//NaNparseFloat (“darlang123”);//NaN

可见字母根本不起作用,浮点数只取有效值。 比如12.3.4前面的.4显然不是有效值,也就是说parseFloat()只会去第一个小数点旁边的有效数字。

javascript 字符转数字-javascript字符串(String)类型转数字(Number)类型的几种类型

2.强类型转换

js中共有三种强类型转换方法,分别是Number()转换为数字、String()转换为字符串、Boolean()转换为布尔值。

本节介绍的是 Number() 方法,该方法将任何合法的数字字符串(String)转换为数字(Number)类型。

如下:

Number(12);//12Number("12");//12Number("12.34");//12.34Number("12.3.4");//NaNNumber("Infinity");//InfinityNumber(); //0Number('0x11');//17Number('');//0Number(false);//0Number(true);//1Number(undefined);//NaNNumber(null);//0Number([ ]);//0Number([12]);//12Number('darlang');//NaNNumber(newObject());//NaN

根据运行代码的结果,越看越不对,这不是合法的数字串转换吗?

虽然,包含16的补码的合法数字字符串、布尔值(0表示假,1表示真)、无限数等都是合法数字。

嗯,勉强可以,但是字段中的空链表js会转为0,而链表中的数字会转为值。 该字段只能有一个值,比如[12,34],直接返回NaN,抱歉。

与处理多个小数点的parseFloat()类似,NaN将直接返回。

undefined的处理理论上应该是 false => 0 会返回0,虽然不是,参考JS规范中的这一段:

3.弱类型转换

一般来说,弱类型转换是通过算术进行类型转换,不建议这样做。

javascript 字符转数字-javascript字符串(String)类型转数字(Number)类型的几种类型

在类型转换中javascript 字符转数字,由于是“弱”的,所以描述会容易出错,如下:

console.log('1234'-0,typeof('1234'-0));//1234,numberconsole.log('12.4'+0,typeof('12.4'+0));//12.40,字符串控制台. log('1234'*1,typeof('1234'*1));//1234,numberconsole.log('1234'-0,typeof('1234'-0));//1234,numberconsole.log( '1234'-1,typeof('1234'-1));//1233,numberconsole.log('12.4'+1,typeof('12.4'+1));//12.31,stringconsole.log('1234 '*1,typeof('1234'*1));//1234,numberconsole.log('1234'-1,typeof('1234'-1));//1233,numberconsole.log('darlang'- 0,typeof('darlang'-0));//NaN,numberconsole.log('darlang'+1,typeof('darlang'+1));//darlang1,stringconsole.log('darlang'*1, typeof('darlang'*1));//NaN,numberconsole.log('darlang'-1,typeof('darlang'-1));//NaN,number

类型转换时,遇到小数时,无法转换为数值。 当遇到一个字母,比如+号javascript 字符转数字,就会被做成一个连接符,直接将三个连接起来。

参考:

JavaScript 类型转换

JavaScriptparseInt() 函数

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript 字符转数字-javascript字符串(String)类型转数字(Number)类型的几种类型 https://www.wkzy.net/game/177119.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务