前提:字符串必须是一个数字。
Number()
通过 Number()
转换函数传入一个字符串,它会试图将其转换为一个整数或浮点数,这个方法只能基于十进制进行转换,并且字符串中不能出现非数字的字符,否则将返回 NaN
。
Number('123') // 123
Number('12.3') // 12.3
Number('3.14abcd') // NaN
+
将字符串转换为数字最快速的方法是使用一元运算符 +
:
+'123' // 123
+'123.123' // 123.123
+'123,123' // NaN
如果不是一个纯数字,将返回 NaN
。
你也可以用-
(减号)将其转化为负数值。
Math.floor()
Math.floor()
返回小于或等于一个给定数字的最大整数。可以理解 Math.floor()
为向下取整
Math.floor('4') // 4
Math.floor('45.95') // 45
Math.floor('45.05') // 45
Math.floor('-45.05') // -46
Math.floor('-45.95') // -46
Math.ceil
向上取整,要注意的是负数它会往大的取
Math.ceil('-2019.05') // -2019
还有其他的一些 Math
方法,也会在运算过程中,将纯数字字符串转化为数字。
parseInt() 和 parseFloat()
parseInt()
方法可解析一个字符串,并返回一个整数。
注意
- 字符串中只返回第一个数字。
- 开头和结尾的空格是允许的。
- 如果字符串的第一个字符不能被转换为数字,那么
parseInt()
会返回NaN
。 - 在字符串以
0
为开始时旧的浏览器默认使用八进制基数。ECMAScript 5,默认的是十进制的基数。
parseInt('123') // 123
parseInt('123.1234') // 123
parseInt(' 1 2 3 ') // 1
parseInt('18 ACG') // 18
parseInt('hi 2') // NaN
parseInt('10', 10) // 10
parseInt('010') // 10
parseInt('10', 8) // 8
parseInt('0x10') // 16
parseInt('10', 16) //16
parseFloat()
方法可解析一个字符串,并返回一个浮点数。
- 字符串中只返回第一个数字。
- 开头和结尾的空格是允许的。
- 如果字符串的第一个字符不能被转换为数字,那么
parseFloat()
会返回NaN
。
// 小数
parseFloat('123') // 123
parseFloat('123.1234') // 123.1234
parseFloat('1 2 3') // 1
parseFloat('18 ACG') // 18
parseFloat('hi 2') // NaN