学习八个你可能不了解的JavaScript字符串转数字的方法,赶紧来掌握吧!
前言
今天,我们来学习一个知识点,是我从一个二进制实战题目中看到的,我觉得很有学习的必要!!
原题是将两个字符串二进制数相加!当然有很多种办法能够将这个题目实现,但是我觉得,其中最简单的就是将这个
二进制字符串先转换为十进制的整数相加之后,再转换为二进制数!
所以,我们今天要学习的内容就是将字符串数字转换为数字!
正文
今天,我们要学习在JavaScript将字符串数字转换为数字的8种办法
BigInt()方法
- JavaScript中,你可以使用BigInt函数将字符串转换为数字。此方法便是刷题用到的方法
- 转换后的数字末尾有一个 'n' 字符,这是BigInt类型的标记。
- 不过,因为BigInt类型支持的数学操作比普通的Number类型要少,所以在很多情况下,你可能需要使用一些第三方库,如bignumber.js等,来处理大数运算。
- BigInt会尝试解析字符串的前缀,寻找一个有效的整数表示。如果字符串以"0x"或"0X"开头,那么基数是16;如果字符串以"0"开头,基数是8;否则,基数是10。
var str = '145'
var str2 = '1010'
console.log(BigInt(str))
console.log(BigInt('0b'+str2))
输出:
145n
10n
通过上述案例,我们可以发现BigInt
会为识别后的数字结尾打上n
标记
同时也会识别字符串的前缀!
ParseInt()方法
在JavaScript中,parseInt
是一个全局函数,用于将字符串解析为整数。它接受两个参数:要解析的字符串以及基数(表示数字系统的类型,例如十进制、二进制等)。
parseInt
函数的工作方式如下:
- 首先,它会检查第一个参数是否是字符串。如果不是,它会将其转换为字符串。
- 接下来,它会检查第二个参数。如果未提供第二个参数,则默认使用基数10。如果提供了第二个参数,那么这个参数必须是一个介于2和36之间的整数,表示要解析的数字系统的基数。如果基数小于2或大于36,则
parseInt
会抛出一个错误。 -
parseInt
会尝试解析字符串的前缀,寻找一个有效的整数表示。如果字符串以"0x"或"0X"开头,那么基数是16;如果字符串以"0"开头,基数是8;否则,基数是10。重点!!! - 解析过程中,如果字符串包含无法解析为数字的字符,
parseInt
会停止解析并返回已经解析的部分。 - 最后,
parseInt
将返回解析后的整数。
注意:parseInt()
解析一个字符串并返回一个整数。允许空格。仅返回第一个数字。
这种方法虽然有一个限制。如果您解析十进制数,它将四舍五入到最接近的整数值,并将该值转换为string。可能需要使用parseFloat()
方法进行文字转换。
var str = '15'
console.log( parseInt(str)+5)
输出:20
Number()方法
在JavaScript中,Number()
函数用于将给定的参数转换为数字。这个函数可以接受一个参数,并尝试将其转换为一个数字。如果转换成功,则返回转换后的数字。如果转换失败,则返回NaN
(Not a Number)。
console.log(Number('99'))
console.log(Number('99.5'))
console.log(Number('abc'))
输出:
99
99.5
NaN
上述案例,我们通过了三种类型,分别展示三种情况:
- 整数输出
- 带小数输出
- 非数字输出
parseFloat()方法
parseFloat()
是 JavaScript 中的一个函数,它接受一个字符串作为参数,并尝试将该字符串解析为浮点数。如果字符串中包含一个或多个数字,并且没有无法解析的部分,那么 parseFloat()
就会返回这个数字。如果字符串是空字符串,或者只包含非数字字符,那么 parseFloat()
将返回 NaN
(Not a Number)。
console.log(parseFloat('115'))
console.log(parseFloat('115.55'))
console.log(parseFloat('115ad'))
console.log(parseFloat('115 15'))
console.log(parseFloat(' 115 145'))
输出:
115
115.55
115
115
115
上述案例:4种情况:
- 整数输出
- 带小数输出
- 非数字输出
- 带空格(读取第一个有效数字)
Math.floor()方法
Math.floor()
是 JavaScript 的一个数学函数,用于对一个数字进行下舍入。它会返回小于或等于一个给定数字的最大整数。
console.log(Math.floor('145'))
console.log(Math.floor('145.2'))
console.log(Math.floor('145.8'))
console.log(Math.floor('14dd5'))
console.log(Math.floor(' 1 45'))
输出:
145
145
145
NaN
NaN
Math.floor()
方法会对数字字符串向下取整,不会存在四舍五入的情况,也就是说取整数部分!
上述案例:我们可以知道它只会输出整数,一旦有字符串则输出NaN
,空格也不行!
使用一元运算符 (+)(-)
在JavaScript中,一元运算符(+)(-)可以将字符串转换为数字。这是一种隐式类型转换。当一元运算符用于字符串时,它会尝试将字符串转换为一个数字。如果字符串可以被解析为数字,那么它就会被转换为一个数字。如果字符串不能被解析为数字,那么结果将是NaN(Not a Number
console.log(+'145')
console.log(-'145')
console.log(+'145.5')
console.log(+'-145')
console.log(+'145dd')
console.log(+'145 ')
console.log(+'145 14')
console.log(+' 145 14')
145
-145
145.5
-145
NaN
145
NaN
NaN
通过上面的案例,我们可以知道一元运算符(+)(-)能够识别整数和小数,如果是一个数字末尾加上空格,也能识别成数字,如果是其他字符或者空格分割了两个数字最终的结果都会变为NaN
用数字字符串乘以数字1
如果,我们用字符串乘以数字1,那么这个字符串的数字的值不会改变,而且会变为数字
var str = '145'
console.log(str*1+5)
输出:150
~~
双波浪运算符
在JavaScript中,我们也可以用双波浪运算符将字符串转换为数字
var str = '145'
console.log(~~str+5)
输出:150
最后
上述的八种方法大家都是可以应用到字符串转数字一类的题目当中的呀!
今天我们学习就到此为止啦!如果有任何指正和想法大家可以在评论区留言哦!
点个小小的赞支持鼓励一下吧!????????????